串口有数据用什么方法得到?举例
波特率为2400,
奇偶校验:无
数据位:8
停止位参数:1位
必须上位机为61(小a)才能读取数据,
用spcomm控件不能收到数据可使用厂方提供的测试程序可测试到,只是为什么?
(用spcomm控件用串口鼠标测试通过!)

解决方案 »

  1.   

    我没用户spcomm控件,我用是是微软的MSCOMM控件,不错的!我一直在用!建议使用微软的,非常简单!
      

  2.   

    用API函数也很方便
    CreatFile 打 开 串 行 口  
    ReadFile 读 串 口 操 作 
    WriteFile 写 串 口 操 作 
    在MSDN中有很详细的使用说明procedure Tform1.comminitialize;                     // 串 行 口 初 始 化
    var
    lpdcb:Tdcb;
    Begin
    hcom:=createfile('com2',generic_read or generic_write,0,nil,open_existing,
                      file_attribute_normal or file_flag_overlapped,0);//打开 串 行 口
        if hcom=invalid_handle_value then
        else
           setupcomm(hcom,4096,4096);  // 设 置 输 入, 输 出 缓 冲 区 皆 为4096 字 节
            getcommstate(hcom,lpdcb);        // 获 取 串 行 口 当 前 默 认 设 置
            lpdcb.baudrate:=2400;
            lpdcb.StopBits:=1;
            lpdcb.ByteSize:=8;
            lpdcb.Parity:=EvenParity;             // 偶 校 验
            Setcommstate(hcom,lpdcb);
            setcommMask(hcom,ev_rxchar); 
         // 指 定 串 行 口 事 件 为 接 收 到 字 符;
    end;然后读串口就可以了(可以定时;可以用线程,可以用事件触发,当有字符收到时)
      

  3.   

    关于delphi中串口通讯控件的选择
    mscomm:微软的东西,ActivX控件,使用简单,在VB中带的,性能一般,由于是ActivX控件,打包时需要注册好多信息,不推荐使用。
    spcomm:比较好的vcl,算是比较专业的,解剖了一下,功能比较完善。
    TurboPower:公认的专业通讯控件。可以到其站点下载,开放源码了。
    我在制作串口通讯软件时三种都用过,最终全部使用TurboPower!所以也推荐大家使用它。
    写了个例子,基本的串口通讯都可以实现,可提供参考。
    下载地址:http://www.kaer.cn/default.aspx(网站安全性较差,经常当机,如果急用,mail我)
    多多指正:[email protected]上边所讲的例子用的是事件主动接收,不是轮询!