【朔源码燕窝002】【riak 源码分析】【ab源码分析】modbus源码 vc

时间:2024-12-24 02:30:23 来源:原图网站源码 编辑:页面加载中 源码

1.如何读取modbus寄存器中的值
2.ModBus调试精灵

modbus源码 vc

如何读取modbus寄存器中的值

       ä¸‹é¢æ˜¯ä¸€ä¸ªç”¨VC编写的ModBus RTU通讯的例子

       ï¼ˆä¸€ï¼‰ã€é€šè®¯å£è®¾ç½®

       DCB dcb;

       hCom=CreateFile("COM1",源码

       ã€€ã€€ã€€ã€€ GENERIC_READ|GENERIC_WRITE,

       ã€€ã€€ã€€ã€€ã€€0,

       ã€€ã€€ã€€ã€€ã€€NULL,

       ã€€ã€€ã€€ã€€ã€€OPEN_EXISTING,

       ã€€ã€€ã€€ã€€ã€€0,

       ã€€ã€€ã€€ã€€ã€€NULL);

       if(hCom==INVALID_HANDLE_VALUE)

       {

       ã€€ã€€MessageBox("createfile error,error");

       }

       BOOL error=SetupComm(hCom,,);

       if(!error)

       ã€€ã€€MessageBox("setupcomm error");

       error=GetCommState(hCom,&dcb);

       if(!error)

       ã€€ã€€MessageBox("getcommstate,error");

       dcb.BaudRate=;

       dcb.ByteSize=8;

       dcb.Parity=EVENPARITY;//NOPARITY;

       dcb.StopBits=ONESTOPBIT;

       error=SetCommState(hCom,&dcb);

       ï¼ˆäºŒï¼‰ã€CRC校验码计算

       UINT crc

       void calccrc(BYTE crcbuf)

       {

       BYTE i;

       crc=crc ^ crcbuf;

       for(i=0;i<8;i++)

       {

       BYTE TT;

       TT=crc&1;

       crc=crc>>1;

       crc=crc&0x7fff;

       if (TT==1)

       crc=crc^0xa;

       crc=crc&0xffff;

       }

       }

       ï¼ˆä¸‰ï¼‰ã€æ•°æ®å‘送

       zxaddr=;//读取地址为的巡检表数据

       zxnum=;//读取十个通道的数据

       writebuf2[0]=zxaddr;

       writebuf2[1]=3;

       writebuf2[2]=0;

       writebuf2[3]=0;

       writebuf2[4]=0;

       writebuf2[5]=zxnum;

       crc=0xffff;

       calccrc(writebuf2[0]);

       calccrc(writebuf2[1]);

       calccrc(writebuf2[2]);

       calccrc(writebuf2[3]);

       calccrc(writebuf2[4]);

       calccrc(writebuf2[5]);

       writebuf2[6]=crc & 0xff;

       writebuf2[7]=crc/0x;

       WriteFile(hCom,writebuf2,8,&comnum,NULL);

       ï¼ˆå››ï¼‰ã€æ•°æ®è¯»å–

       ReadFile(hCom,writebuf,5+zxnum*2,&comnum,NULL);//读取zxnum个通道数据

       å¯å¢žåŠ é”™è¯¯å¤„理程序,如地址码错误、CRC码错误判断、通讯故障处理等。

       ã€€CRC简单函数如下:

       unsigned short CRC(puchMsg, usDataLen)

       unsigned char *puchMsg ; /* 要进行CRC校验的消息 */

       unsigned short usDataLen ; /* 消息中字节数 */

       {

       unsigned char uchCRCHi = 0xFF ; /* 高CRC字节初始化 */

       unsigned char uchCRCLo = 0xFF ; /* 低CRC 字节初始化 */

       unsigned uIndex ; /* CRC循环中的索引 */

       while (usDataLen--) /* 传输消息缓冲区 */

       {

       uIndex = uchCRCHi ^ *puchMsgg++ ; /* 计算CRC */

       uchCRCHi = uchCRCLo ^ auchCRCHi[uIndex} ;

       uchCRCLo = auchCRCLo[uIndex] ;

       }

       return (uchCRCHi << 8 | uchCRCLo) ;

       }

       /* CRC 高位字节值表 */

       static unsigned char auchCRCHi[] = {

       0x, 0xC1, 0x, 0x, 0x, 0xC0, 0x, 0x, 0x, 0xC0,

       0x, 0x, 0x, 0xC1, 0x, 0x, 0x, 0xC0, 0x, 0x,

       0x, 0xC1, 0x, 0x, 0x, 0xC1, 0x, 0x, 0x, 0xC0,

       0x, 0x, 0x, 0xC0, 0x, 0x, 0x, 0xC1, 0x, 0x,

       0x, 0xC1, 0x, 0x, 0x, 0xC0, 0x, 0x, 0x, 0xC1,

       0x, 0x, 0x, 0xC0, 0x, 0x, 0x, 0xC0, 0x, 0x,

       0x, 0xC1, 0x, 0x, 0x, 0xC0, 0x, 0x, 0x, 0xC1,

       0x, 0x, 0x, 0xC1, 0x, 0x, 0x, 0xC0, 0x, 0x,

       0x, 0xC1, 0x, 0x, 0x, 0xC0, 0x, 0x, 0x, 0xC0,

       0x, 0x, 0x, 0xC1, 0x, 0x, 0x, 0xC1, 0x, 0x,

       0x, 0xC0, 0x, 0x, 0x, 0xC0, 0x, 0x, 0x, 0xC1,

       0x, 0x, 0x, 0xC0, 0x, 0x, 0x, 0xC1, 0x, 0x,

       0x, 0xC1, 0x, 0x, 0x, 0xC0, 0x, 0x, 0x, 0xC0,

       0x, 0x, 0x, 0xC1, 0x, 0x, 0x, 0xC1, 0x, 0x,

       0x, 0xC0, 0x, 0x, 0x, 0xC1, 0x, 0x, 0x, 0xC0,

       0x, 0x, 0x, 0xC0, 0x, 0x, 0x, 0xC1, 0x, 0x,

       0x, 0xC1, 0x, 0x, 0x, 0xC0, 0x, 0x, 0x, 0xC0,

       0x, 0x, 0x, 0xC1, 0x, 0x, 0x, 0xC0, 0x, 0x,

       0x, 0xC1, 0x, 0x, 0x, 0xC1, 0x, 0x, 0x, 0xC0,

       0x, 0x, 0x, 0xC1, 0x, 0x, 0x, 0xC0, 0x, 0x,

       0x, 0xC0, 0x, 0x, 0x, 0xC1, 0x, 0x, 0x, 0xC0,

       0x, 0x, 0x, 0xC1, 0x, 0x, 0x, 0xC1, 0x, 0x,

       0x, 0xC0, 0x, 0x, 0x, 0xC0, 0x, 0x, 0x, 0xC1,

       0x, 0x, 0x, 0xC1, 0x, 0x, 0x, 0xC0, 0x, 0x,

       0x, 0xC1, 0x, 0x, 0x, 0xC0, 0x, 0x, 0x, 0xC0,

       0x, 0x, 0x, 0xC1, 0x, 0x

       } ;

       /* CRC低位字节值表*/

       static char auchCRCLo[] = {

       0x, 0xC0, 0xC1, 0x, 0xC3, 0x, 0x, 0xC2, 0xC6, 0x,

       0x, 0xC7, 0x, 0xC5, 0xC4, 0x, 0xCC, 0x0C, 0x0D, 0xCD,

       0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x,

       0x, 0xC8, 0xD8, 0x, 0x, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A,

       0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC, 0x, 0xD4,

       0xD5, 0x, 0xD7, 0x, 0x, 0xD6, 0xD2, 0x, 0x, 0xD3,

       0x, 0xD1, 0xD0, 0x, 0xF0, 0x, 0x, 0xF1, 0x, 0xF3,

       0xF2, 0x, 0x, 0xF6, 0xF7, 0x, 0xF5, 0x, 0x, 0xF4,

       0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A,

       0x3B, 0xFB, 0x, 0xF9, 0xF8, 0x, 0x, 0xE8, 0xE9, 0x,

       0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF, 0x2D, 0xED,

       0xEC, 0x2C, 0xE4, 0x, 0x, 0xE5, 0x, 0xE7, 0xE6, 0x,

       0x, 0xE2, 0xE3, 0x, 0xE1, 0x, 0x, 0xE0, 0xA0, 0x,

       0x, 0xA1, 0x, 0xA3, 0xA2, 0x, 0x, 0xA6, 0xA7, 0x,

       0xA5, 0x, 0x, 0xA4, 0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F,

       0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x, 0xA9, 0xA8, 0x,

       0x, 0xB8, 0xB9, 0x, 0xBB, 0x7B, 0x7A, 0xBA, 0xBE, 0x7E,

       0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x, 0x, 0xB5,

       0x, 0xB7, 0xB6, 0x, 0x, 0xB2, 0xB3, 0x, 0xB1, 0x,

       0x, 0xB0, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x,

       0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x9C, 0x5C,

       0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B,

       0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x4B, 0x8B,

       0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C,

       0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x,

       0x, 0x, 0x, 0x, 0x, 0x

       } ; 

ModBus调试精灵

       Modbus专用的调试专用工具,可以模拟上位机进行modbus协议主机的源码使用,Modbus调试精灵采用vc编写,源码朔源码燕窝002运行时不需要其它任何文件。源码可以调试具有modbus协议的源码riak 源码分析所有设备,现在功能只涉及到了 这几条常用的源码ab源码分析命令,我想用好这几条命令应该是源码满足现场调试了,软件非常小巧,源码但功能强大,源码是源码现场工程调试人员必备软件。

       软件截图1

       Modbus调试精灵是源码时下互联网常用的软件之一,该软件绿色、源码安全、源码ctp示例源码无毒,源码让你可以放心使用!源码vip充值源码如果Modbus调试精灵是你需要的工具,就赶紧来吧!本站为你提供Modbus调试精灵官方下载。

copyright © 2016 powered by 皮皮网   sitemap