关于ADAM4017 4024的串口通信问题 点击:1170 | 回复:3



dake124

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 6回
  • 年度积分:0
  • 历史总积分:18
  • 注册:2007年4月13日
发表于:2007-05-18 15:39:00
楼主
我正在使用ADAM4017 4024做一个实验设备的开发。前一段时间我的通信总是无法进行。最近我终于知道原因在于ADAM 4017的默认通信要求使用CheckSum,而我使用的Mscomm没有相关的设置.我在ADAM4000 Utility试图关闭CheckSum结果行不通.我是新手,在这里想请教各位高手看我的程序到底问题在哪里.先感谢了.
这是我使用MScomm控件的串口发送程序:
CByteArray array1;
array1.RemoveAll();
array1.SetSize(5);
array1.SetAt(0,0x23);
array1.SetAt(1,0x30);
array1.SetAt(2,0x31);//发送#01
array1.SetAt(3,(0x23+0x30+0x31)%0xFF);//这里我想做一个 CheckSum,
array1.SetAt(4,0x0d);//回车
///////#01 ==>  send 0x23, 0x30, 0x31, 0x0d

for(int ReSend1=0;ReSend1<10;ReSend1++)
{
m_cmscomm1.SetOutput(COleVariant(array1));
Sleep(100);
}

或者我直接发送字符串,我是这样做的:
                   Cstring SendData1="#01"+'\r';
                for(int ReSend2=0;ReSend2<10;ReSend2++)
{
m_cmscomm1.SetOutput(COleVariant(SendData1));
                              Sleep(100);
}

其中m_cmscomm1就是MSComm控件的对象,请教懂这方面的高手给我指点一下,不胜感激.



AB菜鸟

  • 精华:0帖
  • 求助:0帖
  • 帖子:14帖 | 228回
  • 年度积分:0
  • 历史总积分:361
  • 注册:2003年10月26日
发表于:2007-05-18 15:47:00
1楼
将ADAM-4017的Init与地短接,然后用ADAM4K5KUtility工具把CheckSum去掉,再把线断掉重起即可将CheckSum去除

dake124

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 6回
  • 年度积分:0
  • 历史总积分:18
  • 注册:2007年4月13日
发表于:2007-05-20 18:54:00
2楼

我这样试过的啊
我试了好几次都没能做好
是先断线再重启么?

还有,我通过单条指令查询到ADAM有Checksum,可根据根据说明手册的标志位看返回的状态是没有Checksum的,难道研华的说明手册错了?
0: Disabled
1: Enabled

celerycai

  • 精华:0帖
  • 求助:0帖
  • 帖子:7帖 | 70回
  • 年度积分:0
  • 历史总积分:93
  • 注册:2006年5月08日
发表于:2007-10-10 18:16:00
3楼
对,设置时将init*和GND短接后重启进行设置;设置完毕后先断开再重起。

热门招聘
相关主题

官方公众号

智造工程师