Witajcie.
Chciałem napisać programik, który będzie wysyłał SMS. Po długiej lekturze forów stwierdziłem, że najlepiej będzie obsługiwać modem GSM komendami AT.
Następny problem, to obsługa portów COM przez lazarusa. I tu również na forach znalazłem odpowiednie pakiety/komponenty: 5dpo oraz lazserial.
Po podłączeniu starego telefonu do komputera (przez USB) w menadżerze urządzeń pojawił mi się nowy port COM (COM7) oraz modem (COM8). Poprzez putty sprawdziłem, ze mam komunikacje zmodemem (odpowiadał na komendy AT). Skompilowałem przykładowy projekt z 5dpo (sertest)
uses
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, SdpoSerial,
StdCtrls;
type
{ TFMain }
TFMain = class(TForm)
BSend: TButton;
BOpen: TButton;
BClose: TButton;
CBDTR: TCheckBox;
EditSend: TEdit;
Memo: TMemo;
Serial: TSdpoSerial;
procedure BCloseClick(Sender: TObject);
procedure BOpenClick(Sender: TObject);
procedure BSendClick(Sender: TObject);
procedure CBDTRChange(Sender: TObject);
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure SerialRxData(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
FMain: TFMain;
implementation
{ TFMain }
procedure TFMain.FormCreate(Sender: TObject);
begin
end;
procedure TFMain.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
Serial.active := false;
end;
procedure TFMain.FormShow(Sender: TObject);
begin
// Serial.Active := true;
end;
procedure TFMain.BSendClick(Sender: TObject);
begin
Serial.WriteData(EditSend.Text);
end;
procedure TFMain.CBDTRChange(Sender: TObject);
begin
Serial.SetDTR(CBDTR.Checked);
end;
procedure TFMain.BOpenClick(Sender: TObject);
begin
Serial.Open;
end;
procedure TFMain.BCloseClick(Sender: TObject);
begin
Serial.Close;
end;
procedure TFMain.SerialRxData(Sender: TObject);
begin
Memo.Lines.Add(Serial.ReadData);
end;
initialization
{$I main.lrs}
end.
Ustawiłem parametry portu COM8 dokładnie na takie same jak w putty.
Niestety program nie zadziałał. W polu Memo po prawej stronie okna miały pojawiać się komunikaty zwrotne z modemu (Memo.Lines.Add(Serial.ReadData)), ale niestety albo nie pojawia się nic, albo pojawiają się tylko stringi, które wysyłam. Nie wiem czy moje komendy docierają do modemu i problem jest tylko z czytaniem odpowiedzi, czy komponent w ogóle nie działa
Czy ktoś ma doświadczenie z pakietem 5dpo? I może mi pomóc.
Pozdrawiam Sc0li0sis