实例:
点击一个按钮
现发送4B 41 01 00 0B 得到返回值后,发送 4B 41 02 00 08得到返回值后,发送4B 41 03 00 09;依次发送
4B 41 04 00 0E,4B 41 05 00 0F,4B 41 06 00 0C,4B 41 07 00 0D,4B 41 08 00 02,4B 41 09 00 03,4B 41 0A 00 00
点击一个按钮
现发送4B 41 01 00 0B 得到返回值后,发送 4B 41 02 00 08得到返回值后,发送4B 41 03 00 09;依次发送
4B 41 04 00 0E,4B 41 05 00 0F,4B 41 06 00 0C,4B 41 07 00 0D,4B 41 08 00 02,4B 41 09 00 03,4B 41 0A 00 00
解决方案 »
- opengl模型加载正常纹理丢失时怎么回事???
- 全局CString变量,debug运行赋值没问题,release赋值赋了一堆问号
- 请问怎么向菜单项下添加自菜单
- 急诊:First-chance exception in TTY.exe(NTDLL.DLL)BxC0000008:Invalid Handle
- 请问主窗体的Caption属性怎么设置?
- 送分:如何用Javascript启动一个应用程序或加载一个动态链接库?
- 急!!!!!!!对话框为什么没响应??
- HTLP:com+图象
- 急问:如何在一个视图中获得当前光标所在行的字符串?
- 创建匿名管道失败!请高人指点...错误原因
- socket中的send()函数会发送空字符吗?
- 请教下SDI文档利用CTabView如何更改标签页的样式(更改高度、移动到窗口顶部)?或者用CMFCTabView添加View视图?
{
BYTE sum=0;
CByteArray array;
array.RemoveAll(); //清空数组
array.SetSize(nchar); //设置数组大小为帧长度
for(int i=0; i<nchar; i++)
{
//把待发送数据存入数组
array.SetAt(i,pData[i]);
sum+=pData[i];
}
// 打开串口并发送数据
if (!m_cComm.GetPortOpen())
m_cComm.SetPortOpen(TRUE);
m_cComm.SetOutput(COleVariant(array));
return sum;
}void CR232TESTDlg::OnJiaod()
{
// TODO: Add your control notification handler code here
BYTE Tdata[5]={0x4B,0x41,0x01,0x00,0x0B};
mode=1;
SetTimer(0,6000,NULL);
Transmitt(5,Tdata);
m_cComm.SetInputLen(1);
}void CR232TESTDlg::OnJiaod1()
{
// TODO: Add your control notification handler code here
BYTE Tdata[5]={0x4B,0x41,0x02,0x00,0x08};
mode=2;
Transmitt(5,Tdata);
m_cComm.SetInputLen(1);
}void CR232TESTDlg::OnJiaod2()
{
// TODO: Add your control notification handler code here
BYTE Tdata[5]={0x4B,0x41,0x03,0x00,0x09};
mode=3;
Transmitt(5,Tdata);
m_cComm.SetInputLen(1);
}void CR232TESTDlg::OnJiaod3()
{
// TODO: Add your control notification handler code here
BYTE Tdata[5]={0x4B,0x41,0x04,0x00,0x0E};
mode=4;
Transmitt(5,Tdata);
m_cComm.SetInputLen(1);
}void CR232TESTDlg::OnJiaod4()
{
// TODO: Add your control notification handler code here
BYTE Tdata[5]={0x4B,0x41,0x05,0x00,0x0F};
mode=5;
Transmitt(5,Tdata);
m_cComm.SetInputLen(1);
}void CR232TESTDlg::OnJiaod5()
{
// TODO: Add your control notification handler code here
BYTE Tdata[5]={0x4B,0x41,0x06,0x00,0x0C};
mode=6;
Transmitt(5,Tdata);
m_cComm.SetInputLen(1);
}void CR232TESTDlg::OnJiaod6()
{
// TODO: Add your control notification handler code here
BYTE Tdata[5]={0x4B,0x41,0x07,0x00,0x0D};
mode=7;
Transmitt(6,Tdata);
m_cComm.SetInputLen(1);
}void CR232TESTDlg::OnJiaod7()
{
// TODO: Add your control notification handler code here
BYTE Tdata[5]={0x4B,0x41,0x08,0x00,0x02};
mode=8;
Transmitt(6,Tdata);
m_cComm.SetInputLen(1);
}void CR232TESTDlg::OnJiaod8()
{
// TODO: Add your control notification handler code here
BYTE Tdata[5]={0x4B,0x41,0x09,0x00,0x03};
mode=9;
Transmitt(7,Tdata);
m_cComm.SetInputLen(1);
}void CR232TESTDlg::OnJiaod9()
{
// TODO: Add your control notification handler code here
BYTE Tdata[5]={0x4B,0x41,0x0A,0x00,0x00};
mode=10;
Transmitt(7,Tdata);
m_cComm.SetInputLen(1);
}
void CR232TESTDlg::OnOnCommMscomm()
{
VARIANT vResponse;
int k;
unsigned char *Recievedata;
static signed short int buft;
static signed short int buf;
if (m_cComm.GetCommEvent()==comEvReceive)
{ //判断是否comEvReceive事件
k=m_cComm.GetInBufferCount();
if (k>0)
{
m_cComm.SetInputLen(k);
//读取接收到的数据
vResponse=m_cComm.GetInput();
Recievedata=(unsigned char *) vResponse.parray->pvData; if(Recievedata[0]==0xB4)
{
buft = MAKEWORD(Recievedata[6], Recievedata[7]);
buf = MAKEWORD(Recievedata[4], Recievedata[5]);
switch(mode)
{
case 0:
break;
case 1:
if (Recievedata[3]==0x04)
{
m_ang1.Format("%5.2f %.2f℃",1505*(float)buf/206264.8,(float)buft/10);//
}
else
{
m_ang1.Format("%.d号错误", 1);
}
OnJiaod1();
break;
case 2:
if (Recievedata[3]==0x04)
{
m_ang2.Format("%5.2f %.2f℃",1505*(float)buf/206264.8,(float)buft/10);//
}
else
{
m_ang2.Format("%.d号错误", 2);
}
OnJiaod2();
break;
case 3:
if (Recievedata[3]==0x04)
{
m_ang3.Format("%5.2f %.2f℃",1505*(float)buf/206264.8,(float)buft/10);
}
else
{
m_ang3.Format("%.d号错误", 3);
}
OnJiaod3();
break;
case 4:
if (Recievedata[3]==0x04)
{
m_ang4.Format("%5.2f %.2f℃",1505*(float)buf/206264.8,(float)buft/10);/
}
else
{
m_ang4.Format("%.d号错误", 4);
}
OnJiaod4();
break;
case 5:
if (Recievedata[3]==0x04)
{
m_ang5.Format("%5.2f %.2f℃",1505*(float)buf/206264.8,(float)buft/10);//
}
else
{
m_ang5.Format("%.d号错误", 5);
}
OnJiaod5();
break;
case 6:
if (Recievedata[3]==0x04)
{
m_ang6.Format("%5.2f %.2f℃",1505*(float)buf/206264.8,(float)buft/10);//
}
else
{
m_ang6.Format("%.d号错误", 6);
}
OnJiaod6();
break;
case 7:
if (Recievedata[3]==0x04)
{
m_ang7.Format("%5.2f %.2f℃",1505*(float)buf/206264.8,(float)buft/10);
}
else
{
m_ang7.Format("%.d号错误", 7);
}
OnJiaod7();
break;
case 8:
if (Recievedata[3]==0x04)
{
m_ang8.Format("%5.2f %.2f℃",1505*(float)buf/206264.8,(float)buft/10);// }
else
{
m_ang8.Format("%.d号错误", 8);
}
OnJiaod8();
break;
case 9:
if (Recievedata[3]==0x04)
{
m_ang9.Format("%5.2f %.2f℃",1505*(float)buf/206264.8,(float)buft/10);//
}
else
{
m_ang9.Format("%.d号错误", 9);
}
OnJiaod9();
break;
case 10:
if (Recievedata[3]==0x04)
{
m_ang10.Format("%5.2f %.2f℃",1505*(float)buf/206264.8,(float)buft/10);//
}
else
{
m_ang10.Format("%.d号错误", 10);
}
break;
case 18:
if (Recievedata[3]==0x00)
{
MessageBox("联机成功!", MB_OK);
}
else
{
MessageBox("联机失败!", MB_OK);
}
break;
default:
break;
}
}
}
UpdateData(FALSE);
}
// return TRUE ;
}
2.看协议是否正确主从式的试试modbus协议如果错误就重发信息