Wymiana pliku przez RS232 [z PC do PC]

0

Witam,

Chcę wysłać z PC do PC plik mający 50MB po RS232.

Temat polega na tym iż muszę użyć bufora 32, 64, max 128bajtów ze względu na otrzymywane dane bufor 128 musi być maksymalny.

Idea (ostatni bajt to CRC8):

  • Master - nadaje np 128bajty
  • Slave - odbiera 128bajty
  • Slave - czyta CRC ramki
  • Slave - potwierdza OK lub potwierdza ERROR
  • Master - odbiera kod z Slave i wykonuje czynność wysłania kolejnej ramki lub powtarza jeszcze raz tą błędnie wysłaną z poprzedniej transmisji w zależności od odebranego kody od Slev'a

do komunikacji po RS'ie używam następujących funkcji

function Write_Comm(hCommDev: THANDLE; lpBuffer: PChar;nNumberOfBytesToWrite: DWORD):BOOL;
function Read_Comm(hCommDev: THANDLE; Buf_Size: DWORD): BOOL;

begin
//WYSYŁAM
Form1.Write_Comm(hCommDev, Buffer_O, SizeOf(Buffer_O));

//ODBIERAM
Form1.Read_Comm(hCommDev, SizeOf(Buffer_I)) = TRUE;
end;

Jaka strukture programu powinienem mieć w MASTER i SLAVE

0
TomekMus napisał(a)

Chcę wysłać z PC do PC plik mający 50MB po RS232.
Jakiś poważny powód takiej karkołomnej operacji? Bo wiesz, do tego się zwykle Ethernetu używa.

0

Niestety jedyny dostępny interfejs jaki posiadam jest to RS232 w tym urządzeniu.

I dlatego pytam - dane mogą być 1MB, 2MB - lecz max 50MB.

:-(

0

takie rzeczy mozna chyba robic hyper terminalem. norton commanderem pod dosa tez sie dalo :D

0

to ma baodajże ok 60kbs przepustowości. Nie możesz pena, albo na płtkę cd wsadzic? Możesz jeszcze twardziela przełozyc

0

najprosciej mozna to zrobic w programie tak jak otwieranie i zapis do zwyklego pliku (fread fwrite) a jako nazwe ustawiasz COMX (X- numer COMa). ale transmisja taka bedzie blokujaca, zeby zrobic to nie blokujaco musialbys uzyc ReadFile, WriteFile i albo zrobic to asynchronicznie albo ustawic timeouty i odczytywac/zapisywac co jakis czas

0

Od tego są wątki aby się nie przejmować, że jakaś operacja jest blokująca…

Nie możesz pena, albo na płtkę cd wsadzic?
Skoro już zostało ustalone, że COM jest warunkiem nienegocjowalnym, dalsze podważanie jego zasadności jest niepożądane.

0

Do komunikacji po RS232 użyj pakietu komponentów TurboPower Async Professional.
Darmowe komponenty, do ściągnięcia na sourceforge. Najlepiej wersję 4.07 (ale te nie działają w Delphi 2009 i nowszym)

1 użytkowników online, w tym zalogowanych: 0, gości: 1