在delphi中如何把这个值发送到串口去?

解决方案 »

  1.   

    别人告诉我ctrl+z的unicode值是0x001A,我在delphi中直接用vacomm1.writetext('0x001A')写入串口,结果串口设备没有把他当成控制字符,而是直接当成'0x001A'这个字符串了。这个串口设备的控制字符是unicode 的ctrl+z
      

  2.   

    通常串口设备只接收和发送单字节,特别是控制命令,可直接发送'1A'试试
    如果必须用unicode代码,应分别发送两字节的控制代码。
      

  3.   

    如果使用MSComm控件发送AT指令,使用Ctrl+Z结束,在AT指令后面加#26就可以.
      

  4.   

    谢谢楼上的,我的串口设备是cdma模块,他的文档中这样写:
    1.  CDMA发英文短信过程:
    发送英文数字短消息“123456”,使用其相应ASCII码发送。
    > AT+WSCL=1,2<CR>  (设置为发英文短信)
    > AT+CMGS="13600193264"<CR>
    > 123456<ctrl-Z>

    > 返回代码:
    > +CMGS:N 表示成功发出,N为序号。
    2.  CDMA发中文短信过程:
    发送中文短消息“通信”其相应Unicode编码:0x901A 0x4FE1
    > AT+WSCL=6,4<CR>
    > AT+CMGS="13600193264"<CR>
    > 60A8597D<ctrl-Z>
    > 返回代码:
    > +CMGS:N 表示成功发出,N为序号。

    > 对于中文短消息其中的控制字符也必须用其UNCODE代码表示。
    注意:程序中发送的时候应该是发送数据0x90,0x1A,0x4F,0xE1,消息内容的结束则以结束符来做标记,所以它的结束符也应该是UNICODE格式的。即在超级终端中用此种方式是无法发送成功的,因为从键盘键入的<ctrl-Z>并非UNICODE格式,仅ASCII码而已,在程序中正确的结束符应该是0x00 0x1a才对。我发送英文的没问题,直接用#26就可以发送,但是中文的不行。
      

  5.   

    vacomm1.writetext(#00#1A);
    看看这样如何