Pb d'envoi de messages

marin1617 Messages postés 42 Date d'inscription samedi 3 août 2013 Statut Membre Dernière intervention 17 décembre 2019 - 15 août 2014 à 15:22
bravemouse Messages postés 74 Date d'inscription jeudi 8 mars 2012 Statut Membre Dernière intervention 2 avril 2019 - 3 juin 2016 à 09:38
Bonjour, je cherche à lancer des messages suivant une position GPS lue sur le COM,
Avec ce programme, mes messages sont lancé un peu n'importe comment

Je pense que le "playsound" dans une boucle While pose pb, j'ai tenté de sortir les playsound
avec appel procedure, et avec un timer mais toujours le même pb.

Y a t'il une autre façon de lancer des messages

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, CPort, CPortCtl, ComCtrls, jpeg, Menus, mmSystem;

type
TForm1 = class(TForm)
ComPort1: TComPort;
Image1: TImage;
RadioGroup1: TRadioGroup;
RichEdit_GLL: TRichEdit;
Autorisation: TStaticText;
Jete_D: TLabel;
jete_c: TLabel;
Interdiction: TStaticText;
Vente_C_D: TOpenDialog;
Vente_D_C: TOpenDialog;
GroupBox1: TGroupBox;
ListBox1: TListBox;
Msg_SECU: TOpenDialog;
Msg_Arr_C: TOpenDialog;
Msg_Arr_D: TOpenDialog;
Button1: TButton;
Pass_Frontiere: TLabel;
Timer1: TTimer;

procedure ComPort1RxChar(Sender: TObject; Count: Integer);
procedure RadioGroup1Click(Sender: TObject);
procedure RichEdit_GLLChange(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);

private
{ Private declarations }
MonMessage : String;
procedure Vente_C_D;
procedure Vente_D_C;
procedure MSG_SECURITE;
procedure MSG_Arr_C;
procedure MSG_Arr_D;

public
{ Public declarations }
end;

var
Form1: TForm1;
Tramecp : string;
Val_Message : integer;

implementation

{$R *.dfm}


procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer); // Gestion de lecture du port Com
var NouveauMsg,MsgInt : string;
PosEndTrame,Arrivee : integer;
begin
{ *** Lecture PortCom *** }
Comport1.ReadStr(NouveauMsg, Count);
MonMessage := MonMessage + NouveauMsg;
MonMessage := Uppercase (MonMessage);
PosEndTrame := Pos(#13#10, MonMessage);
if PosEndTrame <> 0 then
While PosEndTrame <> 0 do
begin
Tramecp := copy(MonMessage,0,PosEndTrame -1);

MonMessage := Copy(MonMessage, PosEndTrame +1, Length(MonMessage));
PosEndTrame := Pos(#13, MonMessage);


{*** repérage de la position utile GLL ***}

if (POS('$GPGLL', Tramecp)) <> 0 then
RichEdit_GLL.Lines.Add(Tramecp);



{ *** Passage de la jetée *** }

if (pos('5107.24',Tramecp))<> 0 then
begin
Timer1.Enabled := true;
Arrivee := 0;
RichEdit_GLL.Tag := 1;
Pass_Frontiere.Visible := false;
jete_d.Visible := true;
end;

{ *** Départ de D ***}

if (pos('5107.22',Tramecp)) and RichEdit_GLL.Tag = 1 then
begin
Interdiction.Visible := true;
Val_Message := 3;
//MSG_SECURITE;
//playSound(PChar(Msg_SECU.FileName),Handle,SND_SYNC);
end;

{ *** Arrivée à D ***}

if (pos('5107.23',Tramecp))and Arrivee = 1 then
begin
Timer1.Enabled := true;
Val_Message := 5;
//MSG_Arr_D;
//playSound(PChar(Msg_Arr_D.FileName),Handle,SND_ASYNC);
end;

{ *** *** }
if (pos('5102.60',Tramecp)) and RichEdit_GLL.Tag = 1 then
begin
Timer1.Enabled := true;
Interdiction.Visible := false;
Autorisation.Visible := true; // Autorisation de vente de Tabacs

Val_Message := 2;
//Vente_D_C;
//playSound(PChar(Vente_D_C.FileName),Handle,SND_ASYNC);

end;

{ *** (51°02'4 N) ***}


if (pos('5058.32',Tramecp))<> 0 then
begin
Timer1.Enabled := true;
Arrivee := 0;
RichEdit_GLL.Tag := 1;
Pass_Frontiere.Visible := false;
jete_c.Visible := true;
Autorisation.Visible := true;
end;
{ *** ***}

if (pos('5058.34',Tramecp)) and RichEdit_GLL.Tag = 1 then
begin
Val_Message := 3;
//MSG_SECURITE;
// playSound(PChar(Msg_SECU.FileName),Handle,SND_SYNC);
end;

{ *** ***}
if (pos('5101.60',Tramecp))and RichEdit_GLL.Tag = 1 then
begin
Timer1.Enabled := true;
Autorisation.Visible := false;
Interdiction.Visible := true;
Val_Message := 1;
// Vente_C_D;
// playSound(PChar(Vente_C_D.FileName),Handle,SND_ASYNC);

end;

{ *** ***}

if (pos('5058.33',Tramecp)) and arrivee = 1 then
begin
Timer1.Enabled := true;
Val_Message := 4;
//MSG_Arr_C;
// playSound(PChar(Msg_Arr_C.FileName),Handle,SND_ASYNC);
end;


{ *** Passage de la frontière ***}

if (pos('5102.40',Tramecp))<> 0 then
begin
Arrivee := 1;
jete_cal.Visible := false;
jete_dov.Visible := false;
Pass_Frontiere.Visible := true;
RichEdit_GLL.Tag := 0;
RichEdit_GLL.Clear ();
end;
end;
end;
procedure TForm1.RadioGroup1Click(Sender: TObject);
begin
Case RadioGroup1.ItemIndex of
0: Comport1.Connected := true;
1: Comport1.Connected := false;
end;
end;

procedure TForm1.Vente_C_D;
begin
// playSound(PChar(SON.FileName),Handle,SND_ASYNC);
sndPlaySound('SON.wav', SND_ASYNC);
Val_Message := 0;
Timer1.Enabled := false;
end;

procedure TForm1.Vente_Douvres_Calais;
begin
// playSound(PChar(SON.FileName),Handle,SND_ASYNC);
sndPlaySound('SON.wav', SND_ASYNC);
Val_Message := 0;
Timer1.Enabled := false;
end;

procedure TForm1.MSG_SECURITE;
begin
// playSound(PChar(SON.FileName),Handle,SND_ASYNC);
sndPlaySound('SON.wav', SND_ASYNC);
Val_Message := 0;
Timer1.Enabled := false;
end;

procedure TForm1.MSG_Arr_Calais;
begin
// playSound(PChar(SON.FileName),Handle,SND_ASYNC);
sndPlaySound('SON.wav', SND_ASYNC);
Val_Message := 0;
Timer1.Enabled := false;
end;

procedure TForm1.MSG_Arr_Douvres;
begin
// playSound(PChar(SON.FileName),Handle,SND_ASYNC);
sndPlaySound('SON.wav', SND_ASYNC);
Val_Message := 0;
Timer1.Enabled := true;
end;

procedure TForm1.RichEdit_GLLChange(Sender: TObject);
begin
SendMessage(RichEdit_GLL.Handle,WM_VSCROLL,SB_BOTTOM,0);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Vente_C_D;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
case Val_Message of
1: Vente_C_D;
2: Vente_D_C;
3: MSG_SECURITE;
4: MSG_Arr_C;
5: MSG_Arr_D;
end;
end;
end.

1 réponse

bravemouse Messages postés 74 Date d'inscription jeudi 8 mars 2012 Statut Membre Dernière intervention 2 avril 2019
3 juin 2016 à 09:38
bonjour
votre problème est très compliqué lorsque vous travaille avec "Serial Port" et vous Utilise le Composant "Comport" qui à des plusieurs versions peut posera des Problèmes .....
d'après votre Code source je voir un "timer" qui démarre dans le thread de l’événement "ComPort1RxChar" et ça, na jamais Autoriser .
0
Rejoignez-nous