Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Хендл com порта в VB работает, в ЕХЕ нет.

63K
27 августа 2010 года
Underwood
2 / / 27.08.2010
Всем добрый день. вкратце...
Есть устройство подключено к COM порту. Пишу приложение которое умеет с ним общаться. Так вот, в самом компиляторе РАБОТАЕТ, а после компиляции в ехе файл НЕТ!!!. Монитор портов показывает, что порт открывается, но данные туда не уходят.
Определение хендла порта..
 
Код:
ComNum = CreateFile(ComNumber, &HC0000000, 0, 0&, &H3, 0, 0)

разность номеров в VB и в ЕХЕ большая VB(~1300), ЕХЕ(~650)..
Думаю проблема в этом, т.к. можно отловить ошибку записи в порт.

Прилагаю кусочки..
Код:
Public Function Init_Com(ComNumber As String, Comsettings As String) As Boolean
On Error GoTo handelinitcom
    Dim ComSetup As DCB, Answer, Stat As COMSTAT, RetBytes As Long
    Dim retval As Long
    Dim CtimeOut As COMMTIMEOUTS, BarDCB As DCB
    ComNum = CreateFile(ComNumber, &HC0000000, 0, 0&, &H3, 0, 0)
    If ComNum = -1 Then
        'MsgBox "Com Port " & ComNumber & " not available. Use Serial settings (on the main menu) to setup your ports.", 48
        Init_Com = False
        Exit Function
    End If
    CtimeOut.ReadIntervalTimeout = 20
    CtimeOut.ReadTotalTimeoutConstant = 1
    CtimeOut.ReadTotalTimeoutMultiplier = 1
    CtimeOut.WriteTotalTimeoutConstant = 10
    CtimeOut.WriteTotalTimeoutMultiplier = 1
    retval = SetCommTimeouts(ComNum, CtimeOut)
    If retval = -1 Then
        retval = GetLastError()
        'MsgBox "Unable to set timeouts for port " & ComNumber & " Error: " & retval
        retval = CloseHandle(ComNum)
        Init_Com = False
        Exit Function
    End If
    retval = BuildCommDCB(Comsettings, BarDCB)
    If retval = -1 Then
        retval = GetLastError()
        'MsgBox "Unable to build Comm DCB " & Comsettings & " Error: " & retval
        retval = CloseHandle(ComNum)
        Init_Com = False
        Exit Function
    End If
    retval = SetCommState(ComNum, BarDCB)
    If retval = -1 Then
        retval = GetLastError()
        'MsgBox "Unable to set Comm DCB " & Comsettings & " Error: " & retval
        retval = CloseHandle(ComNum)
        Init_Com = False
        Exit Function
    End If
   
    Init_Com = True
handelinitcom:
    Exit Function
End Function

Код:
Public Function WriteCOM32(lenByte As Integer) As Integer
On Error GoTo handelwritelpt
    Dim RetBytes As Long, LenVal As Long
    Dim retval As Long
   
    retval = WriteFile(ComNum, bRead(0), lenByte, RetBytes, 0)
    WriteCOM32Hex = RetBytes
   
handelwritelpt:
    Exit Function
End Function

Пример использования..
 
Код:
WriteCOM32Hex (6)


Где "6" - это длина в байтах
bRead() - Глоб. переменная тип byte(255)

Повторюсь, в самом компиляторе все отлично работает, после компиляции нет :confused: ... В чем может быть затык ?
327
30 августа 2010 года
UserNet2008
748 / / 03.04.2010
Возможно поможет настройка компилятора
Проект->Свойства->Компиляция
это в версии VB2008, VB2010
63K
30 августа 2010 года
Underwood
2 / / 27.08.2010
Цитата: UserNet2008
Возможно поможет настройка компилятора
Проект->Свойства->Компиляция
это в версии VB2008, VB2010



Я в 6 версии..
Все равно спасибо, проблема решена.
Тема закрыта.

14
31 августа 2010 года
Phodopus
3.3K / / 19.06.2008
Цитата: Underwood
Все равно спасибо, проблема решена.
Тема закрыта.


Офигенный партизан! Лень написать как?

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог