是关于VB程序的,编写一个上位机程序,读取甚至修改下位机的参数。通信规约为MODBUS

希望可以可到一个具体的例子。
setting 9600 n 8 1
稍微说明下。发送方式如下:05 03 01 00 00 01 crc1 crc2
地址+命令+寄存器地址+字节长度+校验码
其中CRC用16的即可。
具体要求是这样的
1)可以实时的读取下位机的数据。
2) 当下位机数据有变化时,上面能跟着变化(CRC16和实时数据刷新最好能具体说下)
新手刚入门不久,希望得到帮忙,有意的发我邮箱,[email protected]

第1个回答  2011-09-16
MSComm 作为一个串行通讯控件为程序员串口通讯编程节省了很多时间。在基于对话框的应用中加入一个MSComm控件非常简单。只需进行以下操作即可:
  打开“Project->Add To Project->Components and Controls->Registered Activex Controls”(工程/部件/控件),然后选择控件:Microsoft Communication Control,version 6.0(Microsoft Comm Control 6.0)插入到当前的工程中。这样就将类 CMSComm 的相关文件 mscomm.cpp 和 mscomm.h 一并加入到了工程中。编程时只需将控件对话中的 MSComm 控件拖至你的应用对话框中就OK了。追问

这个我知道,我就是用这个写了一个。但是因为写的简单了。CRC校验不会。实时的数据更新也没有。。。。

追答

vb写串口调试软件很简单,就用一个mscomm控件就可以了
下面是主要代码:
Private Sub Cmd_Click()
MSComm1.CommPort = 1 '决定串口号
MSComm1.Settings = "9600,n,8,1" '设置波特率、校验位、数据位、停止位的字符串
MSComm1.PortOpen = True '打开串口
MSComm1.Output = "abcd" '向串口发送字符串"abcd"
MSComm1.PortOpen = False '关闭串口
End Sub

Private Sub MSComm1_OnComm() '当收到串口返回值时触发这个事件
Dim s As String '定义一个字符串变量

s = MSComm1.Input '将串口返回值放到字符串变量s中
MsgBox s '以消息框的方式显示串口返回的内容
End Sub
unsigned short CRC(unsigned char frame[],int n)
//数组frame是CRC校验的对象,n是要校验的字节数
{
int i,j;
unsigned short crc,flag;
crc=0xffff;
for(i=0;i>=1;
if(flag)
{crc&=0x7fff;
crc^=0xa001;
}
}
}
return(crc);
}

本回答被网友采纳
第2个回答  2011-09-16
首先你要明白上位机和下位机之间是通过什么通讯协议联接的。

一般上是COM口,这样你可以用MSCOMM来进行读写。

水平高一点,就会知道其实COM口也可以当作个文件来读。用ReadFile等就可以读写。

还有必须有你的下位机的通讯规约。
相似回答