veit
02.03.2006, 18:18
also ich habe ein gerät an nem 485 bus dass ich per printbin ein paar kommandos schicke, das funzt einwandfrei.
das gerät empfängt die befehle und zeigt es auf dem display an.
nun schickt das gerät antworten, die ich jetzt einlesen will, es klappt aber nicht.
(ich kann das ganze mit dem pc testen, da funzt alles über ein terminal programm)
also die antwort auf ein kommando ist z.b. 200 1 0 254 201
(kurze erklärung: 200 ist das startbyte, dann kommt die gerät-id, dann errorcode 0, dann checksum, dann 201 als endbyte
ich will die werte jetzt einfach in variablen einlesen, und versuche das gerade so:
Config Serialin = Buffered , Size = 64
...
Do
Wait 3
Call Transmit_101 'command get start parameters senden
If Ischarwaiting() = 1 Then
Call Receive_101 'sub receive_101 soll empfangen
End If
'Loop
'End If
.......
Loop
Sub Receive_101
Reset Portc.0 'hier nochmal den rs485 auf empfangen schalten
Startcom = 0
Do
Inputbin Startcom
Loop Until Startcom = 200
...
end sub
beim senden checke ich ob alle daten gesendet wurden mit dem txc flag und schalte den 485 wieder auf empfangen ... geht prima.
problem ist beim empfangen auch wenn ich ischarwaiting weglasse geht gar nix.
kann es sein dass er sich bei inputbin irgendwie aufhängt ?
das gerät antwortet innerhalb von 10ms, deshalb dachte ich mir mit ischarwaiting wartet er bis daten kommen, dann in der sub prüft er ob das byte 200 empfangen wird, das ist dann der erste wert, danach die anderen einlesen....
?????????
buhuuuuu
das gerät empfängt die befehle und zeigt es auf dem display an.
nun schickt das gerät antworten, die ich jetzt einlesen will, es klappt aber nicht.
(ich kann das ganze mit dem pc testen, da funzt alles über ein terminal programm)
also die antwort auf ein kommando ist z.b. 200 1 0 254 201
(kurze erklärung: 200 ist das startbyte, dann kommt die gerät-id, dann errorcode 0, dann checksum, dann 201 als endbyte
ich will die werte jetzt einfach in variablen einlesen, und versuche das gerade so:
Config Serialin = Buffered , Size = 64
...
Do
Wait 3
Call Transmit_101 'command get start parameters senden
If Ischarwaiting() = 1 Then
Call Receive_101 'sub receive_101 soll empfangen
End If
'Loop
'End If
.......
Loop
Sub Receive_101
Reset Portc.0 'hier nochmal den rs485 auf empfangen schalten
Startcom = 0
Do
Inputbin Startcom
Loop Until Startcom = 200
...
end sub
beim senden checke ich ob alle daten gesendet wurden mit dem txc flag und schalte den 485 wieder auf empfangen ... geht prima.
problem ist beim empfangen auch wenn ich ischarwaiting weglasse geht gar nix.
kann es sein dass er sich bei inputbin irgendwie aufhängt ?
das gerät antwortet innerhalb von 10ms, deshalb dachte ich mir mit ischarwaiting wartet er bis daten kommen, dann in der sub prüft er ob das byte 200 empfangen wird, das ist dann der erste wert, danach die anderen einlesen....
?????????
buhuuuuu