Het volgende...
Wanneer ik commandos stuur naar een apparaat aangesloten via RS232, aangestuurd via MSComm-control in VB6, krijg ik niet de volledige response retour.
Hier een voorbeeldje van wat ik terug krijg, en wat ik terug zou moeten krijgen:
Dit krijg ik:
Dit moet ik krijgen:
In principe hetzelfde, op het afbreken van de regel na.
En dat is het hem nou juist, het bovenste is wat ik continue te zien krijg in mijn log wat ik bij hou van de ontvangen data omdat het niet correct werkt. Die log werkt gewoon via de append methode, en begint elke keer op een nieuwe regel bij een OnComm-event in het programma.
Dit is niet de normale manier, aangezien het apparaat via de originele software gewoon keurig werkt. Zou het misschien een timings-probleem op een of andere manier kunnen zijn? Een mankement van Visual Basic (het is niet de perfecte omgeving om met RS232 te werken natuurlijk)?
Hier mijn instellingen van mijn MSComm-control:
Als ik .Settings ook maar een beetje laat afwijken van "38400,N,8,1" dan werkt het hele apparaat niet meer.
Hier de routine van het oncomm-event, en hoe ik daar mee omga:
Base vangt tijdelijk de MSComm-input op, om die vervolgens in het log-bestand te proppen, en mee te sturen aan de "CheckRaw"-routine, die zich op een ander form bevindt. CheckRaw is de routine die op basis van de teruggekregen data van de machine zijn ding doet in het programma (verkregen via variabele base). CheckRaw werkt, mits de volledige data is ontvangen, zonder dat de regel wordt afgebroken. CheckRaw zou ik voor de gein ook nog wel willen posten, maar is HUGE... Dus dat lijkt mij geen goed idee... Ik ben hier nu al een tijdje mee bezig, en ik weet even geen oplossing meer...
Wanneer ik commandos stuur naar een apparaat aangesloten via RS232, aangestuurd via MSComm-control in VB6, krijg ik niet de volledige response retour.
Hier een voorbeeldje van wat ik terug krijg, en wat ik terug zou moeten krijgen:
Dit krijg ik:
code:
1
2
| REGEL TERUGGEKRE GEN TEKST |
Dit moet ik krijgen:
code:
1
| REGEL TERUGGEKREGEN TEKST |
In principe hetzelfde, op het afbreken van de regel na.
En dat is het hem nou juist, het bovenste is wat ik continue te zien krijg in mijn log wat ik bij hou van de ontvangen data omdat het niet correct werkt. Die log werkt gewoon via de append methode, en begint elke keer op een nieuwe regel bij een OnComm-event in het programma.
Dit is niet de normale manier, aangezien het apparaat via de originele software gewoon keurig werkt. Zou het misschien een timings-probleem op een of andere manier kunnen zijn? Een mankement van Visual Basic (het is niet de perfecte omgeving om met RS232 te werken natuurlijk)?
Hier mijn instellingen van mijn MSComm-control:
code:
1
2
3
4
5
6
| ConfigForm.Comm.CommPort = Homogenates.Com ConfigForm.Comm.Settings = "38400,N,8,1" ConfigForm.Comm.InputLen = 0 ConfigForm.Comm.RThreshold = 1 ConfigForm.Comm.RTSEnable = True ConfigForm.Comm.SThreshold = 1 |
Als ik .Settings ook maar een beetje laat afwijken van "38400,N,8,1" dan werkt het hele apparaat niet meer.
Hier de routine van het oncomm-event, en hoe ik daar mee omga:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| Private Sub Comm_OnComm()
Dim Base As String
Select Case Comm.CommEvent
Case comEvReceive
Base = Comm.Input
Open App.Path & "\logs\receive.log" For Append Shared As #137
Print #137, Base
Close #137
Call Homogenates.CheckRaw(Base)
Base = ""
End Select
End Sub |
Base vangt tijdelijk de MSComm-input op, om die vervolgens in het log-bestand te proppen, en mee te sturen aan de "CheckRaw"-routine, die zich op een ander form bevindt. CheckRaw is de routine die op basis van de teruggekregen data van de machine zijn ding doet in het programma (verkregen via variabele base). CheckRaw werkt, mits de volledige data is ontvangen, zonder dat de regel wordt afgebroken. CheckRaw zou ik voor de gein ook nog wel willen posten, maar is HUGE... Dus dat lijkt mij geen goed idee... Ik ben hier nu al een tijdje mee bezig, en ik weet even geen oplossing meer...