Pb d'envoi de messages

Messages postés
42
Date d'inscription
samedi 3 août 2013
Dernière intervention
15 août 2014
- - Dernière réponse : bravemouse
Messages postés
75
Date d'inscription
jeudi 8 mars 2012
Dernière intervention
6 juin 2016
- 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.
Afficher la suite 

Votre réponse

1 réponse

Messages postés
75
Date d'inscription
jeudi 8 mars 2012
Dernière intervention
6 juin 2016
0
Merci
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 .
Commenter la réponse de bravemouse

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.