Visual Basic - Serialport Hex problem z &H89 i wyżej.

  • 8 Odpowiedzi
  • 3191 Wyświetleń

0 użytkowników i 1 Gość przegląda ten wątek.

Visual Basic - Serialport Hex problem z &H89 i wyżej.
« dnia: Październik 07, 2009, 16:21:00 »
Witam

Mam pytanie odnośnie programowania w Visual Basic dla windows mobile 5/6.

Aktualnie mogę załączyć jeden przekaźnik na płytce realyboard (płytka podłączona jest przez usb (emuluje virtualny port com))

Mam następujący kod odpowiedzialny za sterowanie:

Na kontrolce serialport

Serialport1.Write(chr(&H55))
Serialport1.Write(chr(&H1))
Serialport1.Write(chr(&H4F))
Serialport1.Write(chr(&H0))
Serialport1.Write(chr(&H28))

Ten kod działa i na monitorze portów, i dokładnie te dane przesyła co prawda w osobnych liniach...
Pyt1. Czy da się wysłać w jednej linii, jak to zrobić?

Serialport1.Write(chr(&H53))
Serialport1.Write(chr(&H1))
Serialport1.Write(chr(&H23))
Serialport1.Write(chr(&H0))
Serialport1.Write(chr(&H89))

Ostatni kod jest przykładowy :

Tutaj niestety ostatnia linia się nie zgadza z Danymi z programu port monitor.

Wysyłając tą linię: Serialport1.Write(chr(&H89))
Na port monitorze pokazuje się wartość 2F (lub coś podobnego aktualnie jestem w pracy i nie pamiętam)

Dla wyższych danych też ta sama wartość się pojawia. Przez co nie działa reszta która wymaga większych wartości lich 16-nastkowych.

Dodam że  Serialport1.Write()
Czyta dane w stringach, natomiast do płytki realyboard trzeba wysyłać dane w wartościach Hex.

*

Offline miba

  • *****
  • 4050
  • Płeć: Mężczyzna
  • Sprzęt: Toshiba G900, doszedł x51v
Odp: Visual Basic - Serialport Hex problem z &H89 i wyżej.
« Odpowiedź #1 dnia: Październik 07, 2009, 16:47:28 »
Tu jest opisane jak się połączyć z API do portów seryjnych: http://support.microsoft.com/kb/823179
Wykorzystując to możesz zapisywać binarnie dane i bez wielkiego narzutu. Podłączasz się po prostu do WIN API do seriali.

Twoich dywagacji o przesyłaniu na liniach zupełnie nie rozumiem niestety  :mysli: Płytka, jeśli dobrze zrozumiałem łączy się przez USB i pokazuje profil USB portu szeregowego, dzięki czemu można utworzyć wirualny com. W rzeczywistości dane są przesyłane w postaci ramek USB seryjnie ( więc gdzie te linie? ) Dodatkowo jakbyś spojrzał na narzut tych ramek, to dane to tylko ich część. Są tam dodatkowo nagłówki synchronizacyjne i inne szpargały.

Odp: Visual Basic - Serialport Hex problem z &H89 i wyżej.
« Odpowiedź #2 dnia: Październik 07, 2009, 18:08:48 »
Komunikacją usb zajmują sie stery od FTDI i ich chipset. Wiec ja widze na virtualnych comach czystą komunikację szeregową. Pozatym mikrokontroler na płytce komunikuje się kodzie 16-nastkowym i takie dane przyjmuje. Wydaje mi się że dosc szczegółowo objaśniłem problem. na który w tym wypadku składa się wysyłanie danych przez kontrolke serialport w vb i tyle na delphi działa mi bez problemu.
« Ostatnia zmiana: Październik 07, 2009, 20:04:03 wysłana przez alien1983 »

Odp: Visual Basic - Serialport Hex problem z &H89 i wyżej.
« Odpowiedź #3 dnia: Październik 07, 2009, 20:01:10 »
Jeśli chodzi o linie to monitor portów pokazuje:

Tak wysyla mój program:

SmartDeviceProj   IRP_MJ_WRITE   VCP5   SUCCESS   Length 1: 55    
SmartDeviceProj   IRP_MJ_WRITE   VCP5   SUCCESS   Length 1: 01    
SmartDeviceProj   IRP_MJ_WRITE   VCP5   SUCCESS   Length 1: 53    
SmartDeviceProj   IRP_MJ_WRITE   VCP5   SUCCESS   Length 1: 00    
SmartDeviceProj   IRP_MJ_WRITE   VCP5   SUCCESS   Length 1: 3F    

Tak wysyła oryginalny program:

RealyBoard.exe   IRP_MJ_WRITE   VCP5   SUCCESS   Length 5: 55 01 53 09 15    

*

Offline miba

  • *****
  • 4050
  • Płeć: Mężczyzna
  • Sprzęt: Toshiba G900, doszedł x51v
Odp: Visual Basic - Serialport Hex problem z &H89 i wyżej.
« Odpowiedź #4 dnia: Październik 07, 2009, 21:59:28 »
Twój opis nie jest taki szczegółowy i zawiera po prostu błędy terminologiczne. Np "wyższe dane", "przesyła co prawda w osobnych liniach","trzeba wysyłać dane w wartościach Hex".
Twój post zrozumiałem w ten sposób, że nie dostajesz tej sekwencji bajtów, którą wysyłasz.

Zerknij tu: http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.write.aspx
, bo pewnie tej kontrolki używasz i spróbuj z funkcją nr 2.  Tam masz napisane o przekodowaniu dla innych funkcji, jeśli wykorzystujesz stringi. 

PS Odnośnie tego - "Pozatym mikrokontroler na płytce komunikuje się kodzie 16-nastkowym i takie dane przyjmuje." to ja sie założę, że jednak w kodzie binarnym :P

Odp: Visual Basic - Serialport Hex problem z &H89 i wyżej.
« Odpowiedź #5 dnia: Październik 07, 2009, 22:02:49 »
hehe no niech ci bedzie binarny ale chodziło mi o logiczną budowe ramki, dla komputerów to tylko są zera i jedynki :P

*

Offline miba

  • *****
  • 4050
  • Płeć: Mężczyzna
  • Sprzęt: Toshiba G900, doszedł x51v
Odp: Visual Basic - Serialport Hex problem z &H89 i wyżej.
« Odpowiedź #6 dnia: Październik 07, 2009, 22:08:02 »
Jeśli chodzi o wirtualny com, to nie masz żadnej ramki - to tylko funkcja wysyłania ciągu oktetów do portu. :) Operacje charakterystyczne dla prawdziwego portu com ( a raczej kontrolera ) są pozorowane.

Odp: Visual Basic - Serialport Hex problem z &H89 i wyżej.
« Odpowiedź #7 dnia: Październik 07, 2009, 22:41:02 »
Chodzi o to że mikrokontroler za chipem od usb>com czyta ramki dane muszą mieć początek potem np. 3 hexe danych potem CRC8. Ogólnie już prawie wszystko chodzi... tzn sterowanie z pda płytką I/O jeszcze tylko musze przetlumaczyć kod crc8 z delphi na vb oraz wymyslic jak wysyłać te hexy w ciagu jako ramke a nie w 5 czesciach bo to nie pozostaje bez znaczenia na czas reakcji płytki/programu.

*

Offline miba

  • *****
  • 4050
  • Płeć: Mężczyzna
  • Sprzęt: Toshiba G900, doszedł x51v
Odp: Visual Basic - Serialport Hex problem z &H89 i wyżej.
« Odpowiedź #8 dnia: Październik 07, 2009, 22:46:42 »
Aha kumam ramki zatem.
Przecież ta funkcja nr 2 robi Ci to w jednym kawałku... Masz nawet przykład do VB jak klikniesz na link.