不复杂的功能
原代码
procedure TForm1.MSComm1Comm(Sender: TObject);
begin
jxf:=comthread.Create(false);
end;
以上是如果COM口内容改变,就创建一个线程
以下是线程内的
procedure comthread.Execute;
begin
freeonterminate:=true;if form1.mscomm1.Input='***' then
form1.mscomm1.Output:='OK'
else
form1.mscomm1.Output :='NO' ;
end;
如果是某个值就发送OK否则就NO
可是发送的是OKNO或NONO
跟踪了一下jxf:=comthread.Create(false);被执行了两遍
所以线程被创建了两次????
请各位大侠指点
原代码
procedure TForm1.MSComm1Comm(Sender: TObject);
begin
jxf:=comthread.Create(false);
end;
以上是如果COM口内容改变,就创建一个线程
以下是线程内的
procedure comthread.Execute;
begin
freeonterminate:=true;if form1.mscomm1.Input='***' then
form1.mscomm1.Output:='OK'
else
form1.mscomm1.Output :='NO' ;
end;
如果是某个值就发送OK否则就NO
可是发送的是OKNO或NONO
跟踪了一下jxf:=comthread.Create(false);被执行了两遍
所以线程被创建了两次????
请各位大侠指点
解决方案 »
- mxoutlookbarpro安装的问题,很急,想要多少分都得,我能给的都尽量给,
- 求一函数或算法!
- 谁有TDBGridEh这个控件,给小弟一份,高分求购,分不够可再加?
- 在运行时如何将图片文件装入图象框(image)?
- 获得操作系统的信息(98 or 2000)?
- 询问:用的是query关联的数据库,那如何控制dbgrid有的列数据可以修改,有的列不要以修改的问题?
- MessageBox()提示信息怎样折行显示?(显示为两行)
- 函数
- adoConnection1.GeTTableNames(ComBoBox1.Items,false)的使用错误
- 关于程序员考试的问题?
- 关于继承
- 关于clientdataset/setprovider问题
事件一旦有数据就触发
如果是通讯的话有时有握手信息或拨号信息或状态信息进入就可能触发多次
小弟初学,在有代码只是我用来说明情况的。
我以后一定努力。
yesxwl()兄
握手信息或拨号信息或状态信息进入,串口的内容都会改变吗?有没有好的解决方法
shuixin13(犬犬(心帆))兄
要用到(猫池)16个串口
我用了16个MSCOMM控件
如果串口的内容改变就开个线程
我的思路是这样的,程序还没做,现在只是想把功能调出来
SuccessFlag.SetEvent; LblStatu.Caption:='连接成功';
BtnOutput.Enabled:=True; //允许输出指令至对方MODEM
Sleep(1000);
MSComm1.InputLen:=0;
inputResult:=MSComm1.Input; //清空输入缓冲区;
InputStr:=InputResult; MSComm1.InputLen:=1; MSComm1.Output:='B'; //查询指令;
sleep(100); StartReceive:=True; //开始接收数据标志
Count:=1;
AccountStr:=''; //初始化流量数据字符
FlowStr:='';
PressureStr:='';
end; comEVReceive: begin LblStatu.Caption:='接收数据';
InputStr:=MSComm1.Input;
BtnBreak.Enabled:=True;
MemoData.Lines.append(InputStr); //接收到数据,>RThreshold if StartReceive then //在此判断是否是真正的数据
begin
chr:=Pchar(InputStr)^;