Witam!!
Potrzebuje otworzyc port com, wysylac i odbierac z tego portu informacje, robie to w nastepujacy sposob:
//najpierw deklaracje
COM_N:String;
DCB: TDCB;
Config : String;
Errorek,dlugosc:Integer;
ComId :THandle;
Edit1: TEdit;
CommTimeouts : TCommTimeouts;
//no i zaczynamy
COM_N:='COM1';
ComId:=CreateFile(PChar(COM_N),GENERIC_READ or GENERIC_WRITE,0, Nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);//otwarcie portu
//KONFIGURACJA
if not SetupComm(ComId, RxBufferSize, TxBufferSize) then
begin
ShowMessage('SetupComm error');
exit;
end;
if not GetCommState(ComId, DCB) then
begin
ShowMessage('GetCommState error');
exit;
end;
Config := 'baud=1200 parity=n data=8 stop=1';
if not BuildCommDCB(@Config[1], DCB) then
begin
ShowMessage('BuildCommDCB error');
exit;
end;
if not SetCommState(ComId, DCB) then
begin
ShowMessage('SetCommState error');
exit;
end;
with CommTimeouts do
begin
ReadIntervalTimeout := 0;
ReadTotalTimeoutMultiplier := 0;
ReadTotalTimeoutConstant := 5000;
WriteTotalTimeoutMultiplier := 0;
WriteTotalTimeoutConstant := 2000;
end;
if not SetCommTimeouts(ComId, CommTimeouts) then
begin
ShowMessage('SetCommTimeouts error');
exit;
end;
//KONIEC KONFIGURACJI
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
CloseHandle(ComId); // Zamknięcie COM'a
COM_N:='0';
Label1.Caption:='Brak otwartego portu';Label3.Caption:='Brak otwartego portu';
Button1.Visible:=False; Button2.Visible:=True;
RadioButton1.Visible:=True; RadioButton2.Visible:=True;
RadioButton3.Visible:=True; RadioButton4.Visible:=True;
end;
procedure TForm1.Button3Click(Sender: TObject);
var
tresc:PChar;
bytesToWrite,IPbytes,BytesRead:Cardinal;
test:POverlapped;
Ustawienia_Portu:TDcb;
Timeouty:TCommTimeouts;
d:array[1..1024] of Char;
//Konfiguracja : TCommConfig;
errorek : Integer ;
begin
WriteFile(ComId, tresc,bytesToWrite,IPbytes, Nil);
sleep(2);
if not ReadFile(ComId, d, sizeof(d), BytesRead, Nil) then
begin
ShowMessage('ReadFile error');
exit;
end;
end
end;
No wiec robie to tak jak opisalem powyzej (oczywiscie jest to pseudokod,ale najwazniejsze rzeczy zosatwilem tak jak mam zadeklarowane w programie). Problem jest taki ze podczas proby wyslania zglaszany jest komunikat "Nieprawidlowe dojscie" nie mam pojecia o co chodzi, wydaje mi sie ze wszystko jest ok,ale niestety ciagle ten sam blad.
Jak macie jakies sygestie to prosze o rade
Z gory dzieki