Hallo Leute,
ich habe ein kleines Problem mit der Programmierung meines Seriellen Ports.
Ich nutze in VB 6.0 das MS Comm Control un möchte auf ein externes Gerät über die Serielle Schnittstelle zugreifen.
Ist ansich ja nicht das Problem, nen Port zu öffnen und ein paar Daten zu senden... jedoch benutzt dieses unbekannte Gerät (eine Ausleseeinheit für Memorymodule) ein anderes Handshake verfahren, als man in der Comm Control einstellen kann.
Das würde bedeuten, ich müsste ein eigenes Handshake Verfahren schreiben, welches meinem Programm erlaubt, mit dem Gerät zu kommunizieren.
Ich habe anbei mal einen Anhang, welcher das Ergebnis von Port Mon ausgibt, was zum einen mit meinem Programm ensteht und zum anderen mit der Kommunikationssoftware des Geräts ensteht, auf das ich zugreifen möchte.
Mein Programm:
Externes Programm:
Also wäre interessant zu wissen, wie bringe ich mein VB-Programm dazu beispielsweise XonLimit auf 2048 zu setzen
Die Handshake Einstellungen sind die Sachen, auf die es mir bei meinem Programm ankäme, hat irgend wer eine Lösung... bin echt am Verzweifeln, denn ich weiss, dass dies irgendwie funktioniert.
Habe schon in vielen Foren was dazu gefunden, jedoch jedesmal nen C#, C++ oder .NET Code dazu, welcher in VB 6.0 nicht funktioniert.
Bin für jede Hilfe dankbar.
Gruß Boris
ich habe ein kleines Problem mit der Programmierung meines Seriellen Ports.
Ich nutze in VB 6.0 das MS Comm Control un möchte auf ein externes Gerät über die Serielle Schnittstelle zugreifen.
Ist ansich ja nicht das Problem, nen Port zu öffnen und ein paar Daten zu senden... jedoch benutzt dieses unbekannte Gerät (eine Ausleseeinheit für Memorymodule) ein anderes Handshake verfahren, als man in der Comm Control einstellen kann.
Das würde bedeuten, ich müsste ein eigenes Handshake Verfahren schreiben, welches meinem Programm erlaubt, mit dem Gerät zu kommunizieren.
Ich habe anbei mal einen Anhang, welcher das Ergebnis von Port Mon ausgibt, was zum einen mit meinem Programm ensteht und zum anderen mit der Kommunikationssoftware des Geräts ensteht, auf das ich zugreifen möchte.
Mein Programm:
Quellcode
- 0 10:02:59 VB6.EXE IRP_MJ_CREATE Serial2 SUCCESS Options: Open
- 1 10:02:59 VB6.EXE IOCTL_SERIAL_SET_WAIT_MASK Serial2 SUCCESS Mask: RXCHAR TXEMPTY CTS DSR RLSD BRK ERR RING
- 2 10:02:59 VB6.EXE IOCTL_SERIAL_SET_QUEUE_SIZE Serial2 SUCCESS InSize: 1024 OutSize: 512
- 3 10:02:59 VB6.EXE IOCTL_SERIAL_PURGE Serial2 SUCCESS Purge: TXABORT RXABORT TXCLEAR RXCLEAR
- 4 10:02:59 VB6.EXE IOCTL_SERIAL_SET_TIMEOUTS Serial2 SUCCESS RI:-1 RM:0 RC:0 WM:0 WC:5000
- 5 10:02:59 VB6.EXE IOCTL_SERIAL_GET_BAUD_RATE Serial2 SUCCESS
- 6 10:02:59 VB6.EXE IOCTL_SERIAL_GET_LINE_CONTROL Serial2 SUCCESS
- 7 10:02:59 VB6.EXE IOCTL_SERIAL_GET_CHARS Serial2 SUCCESS
- 8 10:02:59 VB6.EXE IOCTL_SERIAL_GET_HANDFLOW Serial2 SUCCESS
- 9 10:02:59 VB6.EXE IOCTL_SERIAL_GET_BAUD_RATE Serial2 SUCCESS
- 10 10:02:59 VB6.EXE IOCTL_SERIAL_GET_LINE_CONTROL Serial2 SUCCESS
- 11 10:02:59 VB6.EXE IOCTL_SERIAL_GET_CHARS Serial2 SUCCESS
- 12 10:02:59 VB6.EXE IOCTL_SERIAL_GET_HANDFLOW Serial2 SUCCESS
- 13 10:02:59 VB6.EXE IOCTL_SERIAL_SET_BAUD_RATE Serial2 SUCCESS Rate: 9600
- 14 10:02:59 VB6.EXE IOCTL_SERIAL_SET_WAIT_MASK Serial2 SUCCESS Mask: RXCHAR TXEMPTY CTS DSR RLSD BRK ERR RING
- 15 10:02:59 VB6.EXE IOCTL_SERIAL_SET_WAIT_MASK Serial2 SUCCESS Mask: RXCHAR TXEMPTY CTS DSR RLSD BRK ERR RING
- 16 10:02:59 VB6.EXE IOCTL_SERIAL_WAIT_ON_MASK Serial2 SUCCESS
- 17 10:03:00 VB6.EXE IOCTL_SERIAL_CLR_RTS Serial2 SUCCESS
- 18 10:03:00 VB6.EXE IOCTL_SERIAL_SET_WAIT_MASK Serial2 SUCCESS Mask: RXCHAR TXEMPTY CTS DSR RLSD BRK ERR RING
- 19 10:03:00 VB6.EXE IOCTL_SERIAL_WAIT_ON_MASK Serial2 SUCCESS
- 20 10:03:00 VB6.EXE IOCTL_SERIAL_SET_DTR Serial2 SUCCESS
- 21 10:03:00 VB6.EXE IOCTL_SERIAL_SET_LINE_CONTROL Serial2 SUCCESS StopBits: 1 Parity: NONE WordLength: 8
- 22 10:03:00 VB6.EXE IOCTL_SERIAL_SET_CHAR Serial2 SUCCESS EOF:1a ERR:0 BRK:0 EVT:0 XON:11 XOFF:13
- 23 10:03:00 VB6.EXE IOCTL_SERIAL_SET_HANDFLOW Serial2 SUCCESS Shake:1 Replace:0 XonLimit:256 XoffLimit:256
- 24 10:03:00 VB6.EXE IOCTL_SERIAL_GET_COMMSTATUS Serial2 SUCCESS
- 25 10:03:03 VB6.EXE IOCTL_SERIAL_GET_COMMSTATUS Serial2 SUCCESS
- 26 10:03:03 VB6.EXE IOCTL_SERIAL_GET_PROPERTIES Serial2 SUCCESS
- 27 10:03:03 VB6.EXE IRP_MJ_WRITE Serial2 SUCCESS Length 4: 01 09 00 09
- 28 10:03:03 VB6.EXE IOCTL_SERIAL_GET_COMMSTATUS Serial2 SUCCESS
- 29 10:03:03 VB6.EXE IOCTL_SERIAL_SET_WAIT_MASK Serial2 SUCCESS Mask: RXCHAR TXEMPTY CTS DSR RLSD BRK ERR RING
- 30 10:03:03 VB6.EXE IOCTL_SERIAL_WAIT_ON_MASK Serial2 SUCCESS
- 31 10:03:03 VB6.EXE IOCTL_SERIAL_GET_COMMSTATUS Serial2 SUCCESS
- 32 10:04:17 VB6.EXE IOCTL_SERIAL_SET_WAIT_MASK Serial2 SUCCESS Mask:
- 33 10:04:17 VB6.EXE IOCTL_SERIAL_CLR_DTR Serial2 SUCCESS
- 34 10:04:17 VB6.EXE IOCTL_SERIAL_PURGE Serial2 SUCCESS Purge: TXABORT RXABORT TXCLEAR RXCLEAR
- 35 10:04:17 VB6.EXE IRP_MJ_CLEANUP Serial2 SUCCESS
- 36 10:04:17 VB6.EXE IRP_MJ_CLOSE Serial2 SUCCESS
Externes Programm:
Quellcode
- 0 12:14:34 Triplog V2.12.e IRP_MJ_CREATE Serial2 SUCCESS Options: Open
- 1 12:14:34 Triplog V2.12.e IOCTL_SERIAL_GET_COMMSTATUS Serial2 SUCCESS
- 2 12:14:34 Triplog V2.12.e IOCTL_SERIAL_PURGE Serial2 SUCCESS Purge: TXCLEAR RXCLEAR
- 3 12:14:34 Triplog V2.12.e IOCTL_SERIAL_GET_BAUD_RATE Serial2 SUCCESS
- 4 12:14:34 Triplog V2.12.e IOCTL_SERIAL_GET_LINE_CONTROL Serial2 SUCCESS
- 5 12:14:34 Triplog V2.12.e IOCTL_SERIAL_GET_CHARS Serial2 SUCCESS
- 6 12:14:34 Triplog V2.12.e IOCTL_SERIAL_GET_HANDFLOW Serial2 SUCCESS
- 7 12:14:34 Triplog V2.12.e IOCTL_SERIAL_GET_BAUD_RATE Serial2 SUCCESS
- 8 12:14:34 Triplog V2.12.e IOCTL_SERIAL_GET_LINE_CONTROL Serial2 SUCCESS
- 9 12:14:34 Triplog V2.12.e IOCTL_SERIAL_GET_CHARS Serial2 SUCCESS
- 10 12:14:34 Triplog V2.12.e IOCTL_SERIAL_GET_HANDFLOW Serial2 SUCCESS
- 11 12:14:34 Triplog V2.12.e IOCTL_SERIAL_SET_BAUD_RATE Serial2 SUCCESS Rate: 9600
- 12 12:14:34 Triplog V2.12.e IOCTL_SERIAL_SET_RTS Serial2 SUCCESS
- 13 12:14:34 Triplog V2.12.e IOCTL_SERIAL_SET_DTR Serial2 SUCCESS
- 14 12:14:34 Triplog V2.12.e IOCTL_SERIAL_SET_LINE_CONTROL Serial2 SUCCESS StopBits: 1 Parity: NONE WordLength: 8
- 15 12:14:34 Triplog V2.12.e IOCTL_SERIAL_SET_CHAR Serial2 SUCCESS EOF:0 ERR:0 BRK:0 EVT:0 XON:11 XOFF:13
- 16 12:14:34 Triplog V2.12.e IOCTL_SERIAL_SET_HANDFLOW Serial2 SUCCESS Shake:1 Replace:40 XonLimit:2048 XoffLimit:512
- 17 12:14:34 Triplog V2.12.e IOCTL_SERIAL_SET_QUEUE_SIZE Serial2 SUCCESS InSize: 512 OutSize: 512
- 18 12:14:34 Triplog V2.12.e IOCTL_SERIAL_SET_TIMEOUTS Serial2 SUCCESS RI:0 RM:0 RC:1000 WM:10 WC:100
- 19 12:14:34 Triplog V2.12.e IOCTL_SERIAL_PURGE Serial2 SUCCESS Purge: TXCLEAR RXCLEAR
- 20 12:14:34 Triplog V2.12.e IRP_MJ_WRITE Serial2 SUCCESS Length 4: 01 09 00 09
- 21 12:14:34 Triplog V2.12.e IRP_MJ_READ Serial2 SUCCESS Length 10: 07 90 00 00 09 72 02 00 00 00
- 22 12:14:34 Triplog V2.12.e IRP_MJ_CLEANUP Serial2 SUCCESS
- 23 12:14:34 Triplog V2.12.e IRP_MJ_CLOSE Serial2 SUCCESS
Also wäre interessant zu wissen, wie bringe ich mein VB-Programm dazu beispielsweise XonLimit auf 2048 zu setzen
Die Handshake Einstellungen sind die Sachen, auf die es mir bei meinem Programm ankäme, hat irgend wer eine Lösung... bin echt am Verzweifeln, denn ich weiss, dass dies irgendwie funktioniert.
Habe schon in vielen Foren was dazu gefunden, jedoch jedesmal nen C#, C++ oder .NET Code dazu, welcher in VB 6.0 nicht funktioniert.
Bin für jede Hilfe dankbar.
Gruß Boris