DELPHI 控件SPCOMM向串口发送数据失败

weixin_38410699 2017-12-07 02:42:43
procedure TfrmMain.stratClick(Sender: TObject);
var
viewstring:string;
i:integer;
commflg:boolean;
rbuf,sbuf:array[0..1] of byte;

// rbuf,sbuf: array[0..12] of byte =($10,$12,$12,$65,$63,$74,$42,$61,$6E,$60,$25,$14,$85);
begin
/////////////////////////
if Edit22.Text='' then
frmMain.Comm2.CommName:='COM4'
else
frmMain.Comm2.CommName:=Edit22.Text;
frmMain.Comm2.BaudRate:=9600;
frmMain.Comm2.ParityCheck:=false; //奇偶校验
frmMain.Comm2.ByteSize:=_8;
frmMain.Comm2.Parity:=Even;
frmMain.COMM2.StopBits:=_1;
//Comm2.SendDataEmpty:=True;
frmMain.Comm2.StopComm;
frmMain.Comm2.StartComm;
///////////////////////////////

viewstring:='' ;
commflg:=true;

sbuf[0]:=1; //开机

if not frmMain.comm2.writecommdata(@sbuf[0],1 ) then
begin
// Label4.Caption:= GetLastError ;
commflg:=false;
Label4.Caption:='发送启动信息2出错';
end
else
begin
Label4.Caption:='发送启动信息2成功';
end;
Edit10.SetFocus;
Comm2.StopComm;
...全文
1768 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenlei 2018-01-27
  • 打赏
  • 举报
回复
是不是关闭串口太早了,数据还没有发送出去。
xiaocongzhi 2018-01-14
  • 打赏
  • 举报
回复
if not frmMain.comm2.writecommdata(sbuf[0],1 ) then 这样试试
cdzhaoye 2018-01-12
  • 打赏
  • 举报
回复
你需要提供你用的SPCOMM和Delphi的版本,不同的版本下,函数writecommdata 的用法存在区别,尤其是Delphi XE版本之后的。
leeky 2017-12-08
  • 打赏
  • 举报
回复
补充:我分享的“称重仪表数据解析控件代码”涉及大量的串口操作。
leeky 2017-12-08
  • 打赏
  • 举报
回复
writecommdata这函数是否成功跟波特率没关系的。 把if not frmMain.comm2.writecommdata(@sbuf[0],1 ) then修改为 if not frmMain.comm2.writecommdata(@sbuf,1 ) then 试试。
tanqth 2017-12-07
  • 打赏
  • 举报
回复
frmMain.Comm2.BaudRate:=9600; frmMain.Comm2.ParityCheck:=false; //奇偶校验 frmMain.Comm2.ByteSize:=_8; frmMain.Comm2.Parity:=Even; frmMain.COMM2.StopBits:=_1; 这几个设置你需要注意一下,可以使用工具先测试参数是否正确,如波特率9600是否正确。
lyhoo163 2017-12-07
  • 打赏
  • 举报
回复
发短信,二种模式: 一是需要专用模块,通过类似手机模块,发短信。 二是通过专用网站,发送短信。 采购手机模拟,有Demo和Dll说明的。

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧