logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

RS-232 - Jak ręcznie wysłać sekwencję z DemoStudio_RS232.exe?

keicop 06 Lut 2014 18:07 2250 2
REKLAMA
  • #1 13269519
    keicop
    Poziom 9  
    Próbuję ręcznie wysłać na port szeregowy to samo co wysyła gotowe oprogramowanie od producenta.
    Sekwencja w przypadku softu producenta wygląda następująco:

    00000158    04.02.2014 18:09:51.106    +27.034    IRP_MJ_CREATE - process 5956 (DemoStudio_RS232.exe)    DOWN    0x00000000       
    00000159    04.02.2014 18:09:51.184    +0.078    IRP_MJ_CREATE    UP    0x00000000       
    00000160    04.02.2014 18:09:51.184    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_WAIT_MASK    DOWN    0x00000000    fd 01 00 00     ....
    00000161    04.02.2014 18:09:51.184    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_WAIT_MASK    UP    0x00000000       
    00000162    04.02.2014 18:09:51.184    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_QUEUE_SIZE    DOWN    0x00000000    00 20 00 00 00 02 00 00     . ......
    00000163    04.02.2014 18:09:51.184    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_QUEUE_SIZE    UP    0x00000000       
    00000164    04.02.2014 18:09:51.184    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_PURGE    DOWN    0x00000000    0f 00 00 00     ....
    00000165    04.02.2014 18:09:51.184    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_PURGE    UP    0x00000000       
    00000166    04.02.2014 18:09:51.184    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_TIMEOUTS    DOWN    0x00000000    ff ff ff ff 00 00 00 00 00 00 00 00 00 00 00 00 88 13 00 00     ....................
    00000167    04.02.2014 18:09:51.184    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_TIMEOUTS    UP    0x00000000       
    00000184    04.02.2014 18:09:51.184    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_BAUD_RATE    DOWN    0x00000000    00 c2 01 00     ....
    00000185    04.02.2014 18:09:51.184    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_WAIT_MASK    DOWN    0x00000000    fd 01 00 00     ....
    00000186    04.02.2014 18:09:51.199    +0.015    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_BAUD_RATE    UP    0x00000000       
    00000187    04.02.2014 18:09:51.199    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_CLR_RTS    DOWN    0x00000000       
    00000188    04.02.2014 18:09:51.199    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_CLR_RTS    UP    0x00000000       
    00000189    04.02.2014 18:09:51.199    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_CLR_DTR    DOWN    0x00000000       
    00000190    04.02.2014 18:09:51.199    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_CLR_DTR    UP    0x00000000       
    00000191    04.02.2014 18:09:51.199    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_LINE_CONTROL    DOWN    0x00000000    02 00 08     ...
    00000192    04.02.2014 18:09:51.199    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_LINE_CONTROL    UP    0x00000000       
    00000193    04.02.2014 18:09:51.199    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_CHARS    DOWN    0x00000000    1a 00 00 00 11 13     ......
    00000194    04.02.2014 18:09:51.199    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_CHARS    UP    0x00000000       
    00000195    04.02.2014 18:09:51.199    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_HANDFLOW    DOWN    0x00000000    00 00 00 00 00 00 00 00 00 08 00 00 00 08 00 00     ................
    00000196    04.02.2014 18:09:51.199    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_HANDFLOW    UP    0x00000000
    !!!!!!!!!!!!!!!!!!!!!!!!!!
    00000199    04.02.2014 18:09:51.199    +0.0    IRP_MJ_WRITE    DOWN    0x00000000    de     .
    !!!!!!!!!!!!!!!!!!!!!!!!!!
    00000200    04.02.2014 18:09:51.199    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_WAIT_MASK    UP    0x00000000       
    00000201    04.02.2014 18:09:51.199    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_WAIT_MASK    DOWN    0x00000000    fd 01 00 00     ....
    00000202    04.02.2014 18:09:51.199    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_WAIT_MASK    UP    0x00000000       
    00000206    04.02.2014 18:09:51.199    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_WAIT_MASK    DOWN    0x00000000    fd 01 00 00     ....
    00000207    04.02.2014 18:09:51.199    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_WAIT_MASK    UP    0x00000000       
    00000215    04.02.2014 18:09:51.199    +0.0    IRP_MJ_READ    UP    0x00000000    03     .
    00000220    04.02.2014 18:09:51.199    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_WAIT_MASK    DOWN    0x00000000    fd 01 00 00     ....
    00000221    04.02.2014 18:09:51.199    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_WAIT_MASK    UP    0x00000000       
    00000224    04.02.2014 18:09:51.199    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_WAIT_MASK    DOWN    0x00000000    fd 01 00 00     ....
    00000225    04.02.2014 18:09:51.199    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_WAIT_MASK    UP    0x00000000       
    00000232    04.02.2014 18:09:51.199    +0.0    IRP_MJ_READ    UP    0x00000000    07     .
    00000238    04.02.2014 18:09:51.199    +0.0    IRP_MJ_READ    UP    0x00000000    01     .
    00000244    04.02.2014 18:09:51.199    +0.0    IRP_MJ_READ    UP    0x00000000    ff     .
    !!!!!!!!!!!!!!!!!!!!!!!!!!
    00000255    04.02.2014 18:10:08.874    +0.0    IRP_MJ_WRITE    DOWN    0x00000000    d4     .
    !!!!!!!!!!!!!!!!!!!!!!!!!!
    00000260    04.02.2014 18:10:08.890    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_WAIT_MASK    DOWN    0x00000000    fd 01 00 00     ....
    00000261    04.02.2014 18:10:08.890    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_WAIT_MASK    UP    0x00000000       
    !!!!!!!!!!!!!!!!!!!!!!!!!!
    00000267    04.02.2014 18:10:08.890    +0.0    IRP_MJ_WRITE    DOWN    0x00000000    a8     .
    !!!!!!!!!!!!!!!!!!!!!!!!!!
    00000272    04.02.2014 18:10:08.890    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_PURGE    DOWN    0x00000000    0a 00 00 00     ....
    00000273    04.02.2014 18:10:08.890    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_WAIT_MASK    DOWN    0x00000000    fd 01 00 00     ....
    00000274    04.02.2014 18:10:08.890    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_PURGE    UP    0x00000000       
    00000276    04.02.2014 18:10:08.890    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_WAIT_MASK    UP    0x00000000       
    !!!!!!!!!!!!!!!!!!!!!!!!!!
    00000287    04.02.2014 18:10:11.308    +0.0    IRP_MJ_WRITE    DOWN    0x00000000    da     .
    !!!!!!!!!!!!!!!!!!!!!!!!!!
    00000291    04.02.2014 18:10:11.308    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_WAIT_MASK    DOWN    0x00000000    fd 01 00 00     ....
    00000293    04.02.2014 18:10:11.308    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_WAIT_MASK    UP    0x00000000       
    !!!!!!!!!!!!!!!!!!!!!!!!!!
    00000301    04.02.2014 18:10:13.273    +0.0    IRP_MJ_WRITE    DOWN    0x00000000    f1     .
    !!!!!!!!!!!!!!!!!!!!!!!!!!
    00000305    04.02.2014 18:10:13.273    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_WAIT_MASK    DOWN    0x00000000    fd 01 00 00     ....
    00000307    04.02.2014 18:10:13.273    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_WAIT_MASK    UP    0x00000000    


    Sekwencja, którą udało mi się uzyskać:

        00000352    04.02.2014 18:15:24.103    +182.200    IRP_MJ_CREATE - process 4144 (RS Mem.vshost.exe)    DOWN    0x00000000       
        00000353    04.02.2014 18:15:24.181    +0.078    IRP_MJ_CREATE    UP    0x00000000       
        00000374    04.02.2014 18:15:24.181    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_BAUD_RATE    DOWN    0x00000000    00 4b 00 00     .K..
        00000375    04.02.2014 18:15:24.196    +0.015    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_BAUD_RATE    UP    0x00000000       
        00000376    04.02.2014 18:15:24.196    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_CLR_RTS    DOWN    0x00000000       
        00000377    04.02.2014 18:15:24.196    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_CLR_RTS    UP    0x00000000       
        00000378    04.02.2014 18:15:24.196    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_CLR_DTR    DOWN    0x00000000       
        00000379    04.02.2014 18:15:24.196    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_CLR_DTR    UP    0x00000000       
        00000380    04.02.2014 18:15:24.196    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_LINE_CONTROL    DOWN    0x00000000    00 00 08     ...
        00000381    04.02.2014 18:15:24.196    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_LINE_CONTROL    UP    0x00000000       
        00000382    04.02.2014 18:15:24.196    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_CHARS    DOWN    0x00000000    1a 00 00 1a 11 13     ......
        00000383    04.02.2014 18:15:24.196    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_CHARS    UP    0x00000000       
        00000384    04.02.2014 18:15:24.196    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_HANDFLOW    DOWN    0x00000000    00 00 00 00 00 00 00 00 00 04 00 00 00 04 00 00     ................
        00000385    04.02.2014 18:15:24.196    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_HANDFLOW    UP    0x00000000       
        00000394    04.02.2014 18:15:24.196    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_BAUD_RATE    DOWN    0x00000000    00 4b 00 00     .K..
        00000395    04.02.2014 18:15:24.212    +0.015    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_BAUD_RATE    UP    0x00000000       
        00000396    04.02.2014 18:15:24.212    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_CLR_RTS    DOWN    0x00000000       
        00000397    04.02.2014 18:15:24.212    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_CLR_RTS    UP    0x00000000       
        00000398    04.02.2014 18:15:24.212    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_CLR_DTR    DOWN    0x00000000       
        00000399    04.02.2014 18:15:24.212    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_CLR_DTR    UP    0x00000000       
        00000400    04.02.2014 18:15:24.212    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_LINE_CONTROL    DOWN    0x00000000    00 00 08     ...
        00000401    04.02.2014 18:15:24.212    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_LINE_CONTROL    UP    0x00000000       
        00000402    04.02.2014 18:15:24.212    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_CHARS    DOWN    0x00000000    1a 00 00 1a 11 13     ......
        00000403    04.02.2014 18:15:24.212    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_CHARS    UP    0x00000000       
        00000404    04.02.2014 18:15:24.212    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_HANDFLOW    DOWN    0x00000000    00 00 00 00 00 00 00 00 00 04 00 00 00 04 00 00     ................
        00000405    04.02.2014 18:15:24.212    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_HANDFLOW    UP    0x00000000       
        00000406    04.02.2014 18:15:24.212    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_CLR_DTR    DOWN    0x00000000       
        00000407    04.02.2014 18:15:24.212    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_CLR_DTR    UP    0x00000000       
        00000408    04.02.2014 18:15:24.212    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_TIMEOUTS    DOWN    0x00000000    ff ff ff ff ff ff ff ff f4 01 00 00 00 00 00 00 f4 01 00 00     ....................
        00000409    04.02.2014 18:15:24.212    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_TIMEOUTS    UP    0x00000000       
        00000410    04.02.2014 18:15:24.212    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_WAIT_MASK    DOWN    0x00000000    fb 01 00 00     ....
        00000411    04.02.2014 18:15:24.212    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_WAIT_MASK    UP    0x00000000       
        00000412    04.02.2014 18:15:24.212    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_QUEUE_SIZE    DOWN    0x00000000    00 10 00 00 00 08 00 00     ........
        00000413    04.02.2014 18:15:24.212    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_QUEUE_SIZE    UP    0x00000000       
        !!!!!!!!!!!!!!!!!!!!!!!!!!
        00000415    04.02.2014 18:15:30.187    +5.974    IRP_MJ_WRITE    DOWN    0x00000000    de     .
        !!!!!!!!!!!!!!!!!!!!!!!!!!
        00000417    04.02.2014 18:15:30.202    +0.015    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_PURGE    DOWN    0x00000000    0a 00 00 00     ....
        00000418    04.02.2014 18:15:30.202    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_PURGE    UP    0x00000000       
        !!!!!!!!!!!!!!!!!!!!!!!!!!
        00000421    04.02.2014 18:15:30.202    +0.0    IRP_MJ_WRITE    DOWN    0x00000000    d4     .
        !!!!!!!!!!!!!!!!!!!!!!!!!!
        00000423    04.02.2014 18:15:30.202    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_PURGE    DOWN    0x00000000    0a 00 00 00     ....
        00000424    04.02.2014 18:15:30.202    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_PURGE    UP    0x00000000       
        !!!!!!!!!!!!!!!!!!!!!!!!!!
        00000427    04.02.2014 18:15:30.202    +0.0    IRP_MJ_WRITE    DOWN    0x00000000    a8     .
        !!!!!!!!!!!!!!!!!!!!!!!!!!
        00000429    04.02.2014 18:15:30.202    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_PURGE    DOWN    0x00000000    0a 00 00 00     ....
        00000430    04.02.2014 18:15:30.202    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_PURGE    UP    0x00000000       
        !!!!!!!!!!!!!!!!!!!!!!!!!!
        00000433    04.02.2014 18:15:30.202    +0.0    IRP_MJ_WRITE    DOWN    0x00000000    da     .
        !!!!!!!!!!!!!!!!!!!!!!!!!!
        00000435    04.02.2014 18:15:30.202    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_PURGE    DOWN    0x00000000    0a 00 00 00     ....
        00000436    04.02.2014 18:15:30.202    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_PURGE    UP    0x00000000       
        !!!!!!!!!!!!!!!!!!!!!!!!!!
        00000439    04.02.2014 18:15:30.202    +0.0    IRP_MJ_WRITE    DOWN    0x00000000    f1     .
        !!!!!!!!!!!!!!!!!!!!!!!!!!
        00000441    04.02.2014 18:15:30.202    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_PURGE    DOWN    0x00000000    0a 00 00 00     ....
        00000442    04.02.2014 18:15:30.202    +0.0    IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_PURGE    UP    0x00000000  


    Działanie mojego kodu nie jest takie samo jak kodu producenta.
    Zastanawiam się jak wysłać: IRP_MJ_DEVICECONTROL: IOCTL_SERIAL_SET_WAIT_MASK i czy to jest powód dla którego soft nie działa jak trzeba. Niestety google prawie milczą na ten temat lub wiszą tematy z podobnym problemem ale bez odpowiedzi. Nie wiem też, czy akurat ten WAIT_MASK ma wpływ na nieprawidłowe działanie, czy problem leży gdzie indziej. Jak ktoś ogarnia RS-a, to może od razu rzuci mu się w oczy, że coś robię nie tak? Liczę, że ktoś z Was ma większe doświadczenie w tym temacie i pomoże.

    Dodatkowo wydaje mi się, że taką transmisję powinno się się dać odtworzyć w dowolnym terminalu szeregowym. Wysłanie tylko tego, co jest przy IRP_MJ_WRITE niestety nie wystarcza :/
  • REKLAMA
  • #2 13271881
    Konto nie istnieje
    Poziom 1  
  • #3 13272236
    keicop
    Poziom 9  
    hmmm... Tym razem ja nie rozumiem, co masz na myśli pisząc "tekst" :) Wszystko co chcę odtworzyć wkleiłem w pole "Kod". Jest tam to, co nasłuchałem przy użyciu Device Monitoring Studio, czyli wszystko co się dzieje na łączu szeregowym w czasie transmisji. Nie chodzi mi o to, żeby wysłać po RS-ie "00000158 04.02.2014 18:09:51.106 +27.034 IRP_MJ_CREATE - process..." itd. w postaci tekstu :)

    Wykrzyknikami oznaczyłem miejsca, gdzie są wysyłane jakieś konkretne dane przy użyciu IRP_MJ_WRITE. Wysłanie przez terminal prostej sekwencji 0xde, 0xd4, 0xa8, 0xda, 0xf1 jest niewystarczające i stąd moje pytanie.
REKLAMA