用C#和MSComm控件和万用表通信,收不到数据
ohoff 2007-01-31 06:32:40 因项目需要,我需要从一块带RS232串口的数字万用表读取电压数据。该万用表串口设置如下:波特率 19200,停止位 1,数据位 7,奇偶校验 odd。
我用C#和MSComm控件写了个简单的接收程序。部分代码如下:
//串口设置
axMSComm1.CommPort = Convert.ToSByte("1");
axMSComm1.RTSEnable = true;
//收到1字符就触发OnComm事件
axMSComm1.RThreshold = 1;
//串口参数设置
axMSComm1.Settings = "19200,O,7,1";
axMSComm1.InBufferSize = 1024;
axMSComm1.OutBufferSize = 512;
//设为文本模式
axMSComm1.InputMode = MSCommLib.InputModeConstants.comInputModeText;
axMSComm1.InputLen = 0;
axMSComm1.NullDiscard = false;
axMSComm1.PortOpen = true;
//OnComm函数
string strReadBuffer = "";
if(axMSComm1.InBufferCount > 0)
{
strReadBuffer = axMSComm1.Input.ToString();
ReadData.Text += strReadBuffer;
}
现在,我用虚拟串口工具 VSPD 和 串口调试助手 SCommAssists(http://www.gjwtech.com/myprogram.htm)进行测试,我的程序能正常接收数据,但当尝试与万用表通信时,无法收到数据。
我用SCommAssists与万用表通信,同样无法收到数据。但使用另一串口调试软件(http://www.cmsoft.cn/?id=204)时,却可以正常接收万用表数据。收到的数据如下:
//以16进制显示时:
30 30 33 38 38 3B 38 30 36 0D 0A 30 30 33 38 38 3B 38 30 36 0D 0A
//以ASCII码显示时:
00388;806
00488;806
万用表工作方式:当万用表处于串口模式时,即不断发送数据至串口。
请问大家,有什么可能的原因?如何解决?