新聞中心

        EEPW首頁 > 手機與無線通信 > 設(shè)計應(yīng)用 > MODBUS通訊協(xié)議及編程

        MODBUS通訊協(xié)議及編程

        作者: 時間:2010-08-11 來源:網(wǎng)絡(luò) 收藏

          MessageBox(createfileerror,error);
        }
        BOOLerror=SetupComm(hCom,1024,1024);
        if(!error)
          MessageBox(setupcommerror);
        error=GetCommState(hCom,dcb);
        if(!error)
          MessageBox(getcommstate,error);
        dcb.BaudRate=2400;
        dcb.ByteSize=8;

        dcb.Parity=EVENPARITY;//NOPARITY;
        dcb.StopBits=ONESTOPBIT;

        error=SetCommState(hCom,dcb);

        (二)、CRC校驗碼計算

        UINTcrc
        voidcalccrc(BYTEcrcbuf)
        {
        BYTEi;

        crc=crc^crcbuf;
        for(i=0;i8;i++)
        {
        BYTETT;
        TT=crc1;
        crc=crc>>1;
        crc=crc0x7fff;
        if(TT==1)
        crc=crc^0xa001;
        crc=crc0xffff;
        }
        }

        (三)、數(shù)據(jù)發(fā)送

        zxaddr=11;//讀取地址為11的巡檢表數(shù)據(jù)
        zxnum=10;//讀取十個通道的數(shù)據(jù)

        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]=crc0xff;
        writebuf2[7]=crc/0x100;
        WriteFile(hCom,writebuf2,8,comnum,NULL);

        (四)、數(shù)據(jù)讀取

        ReadFile(hCom,writebuf,5+zxnum*2,comnum,NULL);//讀取zxnum個通道數(shù)據(jù)
        可增加錯誤處理程序,如地址碼錯誤、CRC碼錯誤判斷、故障處理等。

        本文引用地址:http://www.104case.com/article/157224.htm

        上一頁 1 2 下一頁

        關(guān)鍵詞: 編程 協(xié)議 通訊 MODBUS

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 红河县| 青州市| 武邑县| 治县。| 石柱| 安徽省| 七台河市| 酒泉市| 兰溪市| 汨罗市| 巴马| 临洮县| 芮城县| 大安市| 虎林市| 社旗县| 开江县| 即墨市| 广水市| 滁州市| 华安县| 宜川县| 德昌县| 巴林左旗| 枞阳县| 贡山| 新丰县| 介休市| 廉江市| 琼中| 罗源县| 疏附县| 兖州市| 新源县| 明水县| 泰宁县| 灵璧县| 武胜县| 凤山市| 青龙| 潼南县|