char szTx[0x10]; // 发送缓存
char szRx[0x10]; // 接收缓存
char szCommand[0x10];// 命令
int nTx,nRx; // 缓存容量存储用
int nSum; // 求和代码计算用
BOOL bRet;
int nRet;
int i;
// 打开COM1端口
hCom = CreateFile ("COM1", (GENERIC_READ | GENERIC_WRITE), 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hCom !=NULL) {
// 进行COM1端口的通讯设定
GetCommState (hCom,&hDcb); // 获取当前的通讯信息
hDcb.DCBlength=sizeof (DCB); // 设定结构体的大小
hDcb.BaudRate =19200; // 通讯速率=19200bps
hDcb.ByteSize =8; // 位长=8bit
hDcb.Parity =2; // 偶校验
hDcb.StopBits =2; // 停止位长=2bit
bRet=SetCommState (hCom,&hDcb); // 设定变更后的通讯信息
if (bRet == TRUE) {
// 进行COM1端口的超时设定
GetCommTimeouts (hCom,&hTim); // 获取当前的超时值
hTim.WriteTotalTimeoutConstant=1000; // 写入超时为1秒
hTim.ReadTotalTimeoutConstant=1000; // 读取超时为1秒
SetCommTimeouts (hCom,&hTim); // 设定变更后的超时值
// 设定使站号为1的变频器切换到网络运行模式的命令
sprintf (szCommand,"01FB10000"); // 发送数据(写入网络运行)
nTx=strlen (szCommand); // 发送数据的大小
// 生成求和代码
nSum=0; // 求和数据的初始化
for (i=0;i < nTx;i++) {
nSum +=szCommand[i]; // 计算求和代码
nSum &= (0xff); // 屏蔽数据
}
// 生成发送数据
memset (szTx,0,sizeof (szTx)); // 发送缓存的初始化
memset (szRx,0,sizeof (szRx)); // 接收缓存的初始化
sprintf (szTx,"\5%s%02X",szCommand,nSum);// ENQ代码+发送数据+求和代码
nTx=1 + nTx + 2; // ENQ代码数+发送数据数+求和代码数
nRet=WriteFile (hCom,szTx,nTx,&nTx,NULL);
// 发送
if (nRet !=0) {
nRet=ReadFile (hCom,szRx,sizeof (szRx),&nRx,NULL);
// 接收
if (nRet !=0) {
// 显示接收数据
for (i=0;i < nRx;i++) {
printf ("%02X ", (BYTE)szRx[i]);// 输出接收数据到控制台
// 以16进制数显示ASCII码。'0'显示为30。 VC基于乘客实时数据的自动扶梯变频控制软件设计(11):http://www.751com.cn/zidonghua/lunwen_4795.html