У меня есть программа, которая читает данные со сканера через последовательный порт.Эта программа отлично работает на Windows XP.У нас установлен сервер терминалов под управлением Windows Server 2008. Я запускаю HyperTerminal на нашем тестовом терминале, он подключается и считывает данные сканера через COM1.Я запускаю свое приложение на том же тестовом терминале и ничего не получаю при сканировании.
Мое приложение подключается к COM1 без ошибок и отключается без ошибок.НО, событие DataReceded НИКОГДА не запускается.Ни одно из событий ErrorReceived.Я играл с Handshaking, с RecieveBytesThreshhold и почти со всеми настройками, которые я нашел.Настройте его точно так же, как настройки Hyperterminal.Я даже пытался запустить таймер в другом потоке, чтобы каждую секунду вызывать ReadByte, чтобы попытаться сделать что-то подобное.Ничего не сработало.
Я пытался это исправить целый день.Добавил события в мой класс, пытаясь увидеть ВСЕ, что происходит.Все, что я знаю, это то, что он подключается к порту и правильно отключается от порта, но между ними ничего не происходит.Нет данных при сканировании.Между подключением к порту и отключением от него не происходило никаких событий.Я устал от Google.:-)
ПОМОГИТЕ !!Пожалуйста???
PS Я также скачал другие простые приложения последовательной связи.В .NET ничего не работает.Период.:-(
Код настройки порта (mvarSerialPort - COM1):
If ComPort Is Nothing Then
ComPort = New SerialPort(mvarSerialPort)
ComPort.BaudRate = 9600
ComPort.Parity = Parity.None
ComPort.StopBits = StopBits.One
ComPort.DataBits = 8
ComPort.ReadTimeout = 2000
ComPort.Encoding = System.Text.Encoding.ASCII
ComPort.Handshake = Handshake.None
ComPort.ReceivedBytesThreshold = 1
End If
If Not ComPort.IsOpen Then ComPort.Open()
ComPort.DtrEnable = True
Событие DataReceived (которое никогда не запускается на этом терминале):
Private Sub Scan(ByVal sender As Object, ByVal e As SerialDataReceivedEventArgs) Handles ComPort.DataReceived
Dim sDataStatus As String = ""
Select Case e.EventType
Case SerialData.Chars
sDataStatus = "Data Received Event - Chars "
Case SerialData.Eof
sDataStatus = "Data Received Event - Eof"
End Select
RaiseEvent ClassStatus(sDataStatus)
Dim delInvoke As ScanResults
delInvoke = New ScanResults(AddressOf RaiseScanEvent)
delInvoke.Invoke()
End Sub
RaiseScanEvent(Это прекрасно работает на моем компьютере и компьютере моего коллеги с XP)
Private Sub RaiseScanEvent()
Dim sScanned As String = ComPort.ReadLine.TrimEnd
RaiseEvent ClassStatus("RaiseScanEvent data: " & sScanned)
RaiseEvent ComDataReceived(sScanned)
End Sub