Eigenes Handshake Verfahren für unbekanntes Serielles Gerät

  • VB6

    Eigenes Handshake Verfahren für unbekanntes Serielles Gerät

    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:

    Quellcode

    1. 0 10:02:59 VB6.EXE IRP_MJ_CREATE Serial2 SUCCESS Options: Open
    2. 1 10:02:59 VB6.EXE IOCTL_SERIAL_SET_WAIT_MASK Serial2 SUCCESS Mask: RXCHAR TXEMPTY CTS DSR RLSD BRK ERR RING
    3. 2 10:02:59 VB6.EXE IOCTL_SERIAL_SET_QUEUE_SIZE Serial2 SUCCESS InSize: 1024 OutSize: 512
    4. 3 10:02:59 VB6.EXE IOCTL_SERIAL_PURGE Serial2 SUCCESS Purge: TXABORT RXABORT TXCLEAR RXCLEAR
    5. 4 10:02:59 VB6.EXE IOCTL_SERIAL_SET_TIMEOUTS Serial2 SUCCESS RI:-1 RM:0 RC:0 WM:0 WC:5000
    6. 5 10:02:59 VB6.EXE IOCTL_SERIAL_GET_BAUD_RATE Serial2 SUCCESS
    7. 6 10:02:59 VB6.EXE IOCTL_SERIAL_GET_LINE_CONTROL Serial2 SUCCESS
    8. 7 10:02:59 VB6.EXE IOCTL_SERIAL_GET_CHARS Serial2 SUCCESS
    9. 8 10:02:59 VB6.EXE IOCTL_SERIAL_GET_HANDFLOW Serial2 SUCCESS
    10. 9 10:02:59 VB6.EXE IOCTL_SERIAL_GET_BAUD_RATE Serial2 SUCCESS
    11. 10 10:02:59 VB6.EXE IOCTL_SERIAL_GET_LINE_CONTROL Serial2 SUCCESS
    12. 11 10:02:59 VB6.EXE IOCTL_SERIAL_GET_CHARS Serial2 SUCCESS
    13. 12 10:02:59 VB6.EXE IOCTL_SERIAL_GET_HANDFLOW Serial2 SUCCESS
    14. 13 10:02:59 VB6.EXE IOCTL_SERIAL_SET_BAUD_RATE Serial2 SUCCESS Rate: 9600
    15. 14 10:02:59 VB6.EXE IOCTL_SERIAL_SET_WAIT_MASK Serial2 SUCCESS Mask: RXCHAR TXEMPTY CTS DSR RLSD BRK ERR RING
    16. 15 10:02:59 VB6.EXE IOCTL_SERIAL_SET_WAIT_MASK Serial2 SUCCESS Mask: RXCHAR TXEMPTY CTS DSR RLSD BRK ERR RING
    17. 16 10:02:59 VB6.EXE IOCTL_SERIAL_WAIT_ON_MASK Serial2 SUCCESS
    18. 17 10:03:00 VB6.EXE IOCTL_SERIAL_CLR_RTS Serial2 SUCCESS
    19. 18 10:03:00 VB6.EXE IOCTL_SERIAL_SET_WAIT_MASK Serial2 SUCCESS Mask: RXCHAR TXEMPTY CTS DSR RLSD BRK ERR RING
    20. 19 10:03:00 VB6.EXE IOCTL_SERIAL_WAIT_ON_MASK Serial2 SUCCESS
    21. 20 10:03:00 VB6.EXE IOCTL_SERIAL_SET_DTR Serial2 SUCCESS
    22. 21 10:03:00 VB6.EXE IOCTL_SERIAL_SET_LINE_CONTROL Serial2 SUCCESS StopBits: 1 Parity: NONE WordLength: 8
    23. 22 10:03:00 VB6.EXE IOCTL_SERIAL_SET_CHAR Serial2 SUCCESS EOF:1a ERR:0 BRK:0 EVT:0 XON:11 XOFF:13
    24. 23 10:03:00 VB6.EXE IOCTL_SERIAL_SET_HANDFLOW Serial2 SUCCESS Shake:1 Replace:0 XonLimit:256 XoffLimit:256
    25. 24 10:03:00 VB6.EXE IOCTL_SERIAL_GET_COMMSTATUS Serial2 SUCCESS
    26. 25 10:03:03 VB6.EXE IOCTL_SERIAL_GET_COMMSTATUS Serial2 SUCCESS
    27. 26 10:03:03 VB6.EXE IOCTL_SERIAL_GET_PROPERTIES Serial2 SUCCESS
    28. 27 10:03:03 VB6.EXE IRP_MJ_WRITE Serial2 SUCCESS Length 4: 01 09 00 09
    29. 28 10:03:03 VB6.EXE IOCTL_SERIAL_GET_COMMSTATUS Serial2 SUCCESS
    30. 29 10:03:03 VB6.EXE IOCTL_SERIAL_SET_WAIT_MASK Serial2 SUCCESS Mask: RXCHAR TXEMPTY CTS DSR RLSD BRK ERR RING
    31. 30 10:03:03 VB6.EXE IOCTL_SERIAL_WAIT_ON_MASK Serial2 SUCCESS
    32. 31 10:03:03 VB6.EXE IOCTL_SERIAL_GET_COMMSTATUS Serial2 SUCCESS
    33. 32 10:04:17 VB6.EXE IOCTL_SERIAL_SET_WAIT_MASK Serial2 SUCCESS Mask:
    34. 33 10:04:17 VB6.EXE IOCTL_SERIAL_CLR_DTR Serial2 SUCCESS
    35. 34 10:04:17 VB6.EXE IOCTL_SERIAL_PURGE Serial2 SUCCESS Purge: TXABORT RXABORT TXCLEAR RXCLEAR
    36. 35 10:04:17 VB6.EXE IRP_MJ_CLEANUP Serial2 SUCCESS
    37. 36 10:04:17 VB6.EXE IRP_MJ_CLOSE Serial2 SUCCESS


    Externes Programm:

    Quellcode

    1. 0 12:14:34 Triplog V2.12.e IRP_MJ_CREATE Serial2 SUCCESS Options: Open
    2. 1 12:14:34 Triplog V2.12.e IOCTL_SERIAL_GET_COMMSTATUS Serial2 SUCCESS
    3. 2 12:14:34 Triplog V2.12.e IOCTL_SERIAL_PURGE Serial2 SUCCESS Purge: TXCLEAR RXCLEAR
    4. 3 12:14:34 Triplog V2.12.e IOCTL_SERIAL_GET_BAUD_RATE Serial2 SUCCESS
    5. 4 12:14:34 Triplog V2.12.e IOCTL_SERIAL_GET_LINE_CONTROL Serial2 SUCCESS
    6. 5 12:14:34 Triplog V2.12.e IOCTL_SERIAL_GET_CHARS Serial2 SUCCESS
    7. 6 12:14:34 Triplog V2.12.e IOCTL_SERIAL_GET_HANDFLOW Serial2 SUCCESS
    8. 7 12:14:34 Triplog V2.12.e IOCTL_SERIAL_GET_BAUD_RATE Serial2 SUCCESS
    9. 8 12:14:34 Triplog V2.12.e IOCTL_SERIAL_GET_LINE_CONTROL Serial2 SUCCESS
    10. 9 12:14:34 Triplog V2.12.e IOCTL_SERIAL_GET_CHARS Serial2 SUCCESS
    11. 10 12:14:34 Triplog V2.12.e IOCTL_SERIAL_GET_HANDFLOW Serial2 SUCCESS
    12. 11 12:14:34 Triplog V2.12.e IOCTL_SERIAL_SET_BAUD_RATE Serial2 SUCCESS Rate: 9600
    13. 12 12:14:34 Triplog V2.12.e IOCTL_SERIAL_SET_RTS Serial2 SUCCESS
    14. 13 12:14:34 Triplog V2.12.e IOCTL_SERIAL_SET_DTR Serial2 SUCCESS
    15. 14 12:14:34 Triplog V2.12.e IOCTL_SERIAL_SET_LINE_CONTROL Serial2 SUCCESS StopBits: 1 Parity: NONE WordLength: 8
    16. 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
    17. 16 12:14:34 Triplog V2.12.e IOCTL_SERIAL_SET_HANDFLOW Serial2 SUCCESS Shake:1 Replace:40 XonLimit:2048 XoffLimit:512
    18. 17 12:14:34 Triplog V2.12.e IOCTL_SERIAL_SET_QUEUE_SIZE Serial2 SUCCESS InSize: 512 OutSize: 512
    19. 18 12:14:34 Triplog V2.12.e IOCTL_SERIAL_SET_TIMEOUTS Serial2 SUCCESS RI:0 RM:0 RC:1000 WM:10 WC:100
    20. 19 12:14:34 Triplog V2.12.e IOCTL_SERIAL_PURGE Serial2 SUCCESS Purge: TXCLEAR RXCLEAR
    21. 20 12:14:34 Triplog V2.12.e IRP_MJ_WRITE Serial2 SUCCESS Length 4: 01 09 00 09
    22. 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
    23. 22 12:14:34 Triplog V2.12.e IRP_MJ_CLEANUP Serial2 SUCCESS
    24. 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