procedure TForm1.Button2Click(Sender: TObject);
var
  str:string;begincomm1.BaudRate:=115200;comm1.ParityCheck:=false;comm1.StartComm;str:='at$$moreq=0,13079312962,,4098,你好!系统测试';comm1.WriteCommData(@str,length(str));comm1.StopComm;end;

解决方案 »

  1.   

    可以看一下SPCOMM的源代码,可以看出,writecommdata过程调用时没有直接把数据写到串口,而由SPCOMM的写串口线程把数据写到串口。
    所以在startcomm的立即调用writecommdata,writecommdata后立即调用stopcomm都是有问题的。
    你可以把startcomm放在formcreate中,而把stopcomm放在stopcomm中,决对没有问题。
    还有这句得改一下:comm1.WriteCommdata (@str[1],Length (str)); //@str[1]
      

  2.   

    str:='at$$moreq=0,13079312962,,4098,你好!系统测试';
    我想这是一条手机模块发短信的指令,所以又得提醒你了,手机只认UNICODE,也就是UCS2,国标码是不认识的,显示定为乱码。
      

  3.   

    writecommdata过程调用时没有直接把数据写到串口,而由SPCOMM的写串口线程把数据写到串口。
    所以在startcomm的立即调用writecommdata,writecommdata后立即调用stopcomm都是有问题的。
    你可以把startcomm放在formcreate中,而把stopcomm放在stopcomm中,决对没有问题。
    还有这句得改一下:comm1.WriteCommdata (@str[1],Length (str)); //@str[1]