Wtrącę trochę do tematu.
Swego czasu skonstruowałem tzw. wyświetlacz klienta. Gdy oprogramowanie drukuje paragon w trybie tzw. offline to klient na bieżąco nie wie jaka jest wartość paragonu. Właśnie do tego stosuje się wyświetlacze klienta. Prosta sprawa, wyświetlacz LCD 2x20 znaków i jakieś sterowanie.
Oczywiście nie wymyślałem wszystkiego od podstaw i odnalazłem dokumentacje popularnego wyświetlacza IBM, moje oprogramowanie emuluje ten właśnie protokół a jest on prosty. Zawsze wysyłane są 40 znaków, sterownik po prostu 21 i następne znaki umieszcza w nowej linii i to wszystko.
Sprawa była bardzo prosta, użyłem najtańsze Arduino NANO z portem USB na Atmedze 328 i kontrolerem CH340 i jak wysyłałem na nie 40 znaków z terminala wszystko działało. Jednak mój program używający komponentu ComPort nie działał? Jednak uwaga, gdy oprogramowanie wgrałem do Arduino Pro Micro na Atmedze 32U4 (która ma kontroler USB w sobie) wszystko działało i z terminala i z komponentu ComPort.
Dla zbadania sprawy nawet zrobiłem analizę ramki wysyłanej przez komputer na oscyloskopie (który potrafi dekodować ramki COM) i nie znalazłem różnicy. Zdekodowana ramka wyglądała tak samo. Chociaż nie przesądza to że fizycznie może ona wyglądać troszkę inaczej, ciężko jednak to analizować na domowym sprzęcie.
W każdym razie, jeśli do sterowania tego robota używasz jakieś Andino, zmień na próbę na inne.
Następna sprawa, jakiej wersji ComPorta używasz, jest tego od groma na rynku i może pomyśl nad zmianą na inny komponent.
Write
,WriteLn
,Read
iReadLn
na pliku portu? Chodzi mi o to, czy da się wysyłać i odbierać dane za pomocą tych podstawowych procedur, bez konieczności używania funkcji z API systemu.