Ach komponenty, komponenty.. One tylko obudowują WINAPI - jeśli na coś one pozwalają i w nim można to samo zrobić.
Obsługa RS232 (COM) - pisane z pamięci; podaję tylko kluczowe argumenty:
var
lCOM: THandle;
lParam: TDCB;
begin
lCOM := CreateFile('COM1', GENERIC_READ, 0, OPEN_EXISTING, 0, 0, nil);
if (lCOM <> INVALID_HANDLE_VALUE) then begin
GetCommState(@lParam);
//ToDo: Zmiana parametrów portu COM
SetCommState(@lParam);
//Wysyłanie Writefile(lCOM, ...);
//Odbieranie ReadFile(lCOM, ...);
CloseHandle(lCOM);
end;
end;
Z każdym urządzeniem (włącznie z USB, Firewire, itp) komunikacja może przebiegać identycznie. W inny sposób podaje się tylko nazwę urządzenia (tu 'COM1', tam trzeba ją wykryć [enumerować] dedykowanymi funkcjami) i w inny sposób konfiguruje się parametry urządzenia. Wysyłanie i odbieranie działa tak samo.
Zarówno RS232, jak i USB, są portami z sygnałami wyłącznie cyfrowymi. Nie masz wpływu na analogowe parametry transmisji. Dodając, że oba są portami szeregowymi, nie masz również wpływu na stan konkretnego pinu w określonej chwili, bo dane transmitowane są w paczkach, a w czasie braku transmisji linia wraca do stanu określonego w specyfikacji portu. Wyjątkiem są linie równoległe - modemowe portu RS232 (ustawiane przez SetCommState), oraz ogólnie całe porty równoległe, jak LPT.