在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于DDE協(xié)議的Modbus Plus與Ethernet數(shù)據(jù)交換

            基于DDE協(xié)議的Modbus Plus與Ethernet數(shù)據(jù)交換

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

              上面介紹的方法用于從dde服務(wù)器中獲取mb+網(wǎng)上的數(shù)據(jù),那么如何將數(shù)據(jù)寫入到mb+網(wǎng)呢,同樣還是使用ddeml庫中提供的方法,具體如下:

            ddepoke(idinst,hconv4,szwidth,text(“1020”));
            //寫數(shù)據(jù)到mb+,設(shè)置寬度為1020mm
            ddepoke為自定義函數(shù),具體實現(xiàn)為:
            void ddepoke(dword idinst, hconv hconv, tchar* szitem, tchar*
            szdata)
            {
            hsz hszitem=ddecreatestringhandlew(idinst,szitem,cp_winunicode);

            ddeclienttransaction((lpbyte)unicodetoansi(szdata),(dword)(lstrlenw(szdata)+1),hconv,
            hszitem,cf_text,xtyp_poke,3000,null);
            ddefreestringhandle(idinst,hszitem);
            }

              (3) 與以太網(wǎng)交換數(shù)據(jù),這里使用的是socket協(xié)議。前面提到了緩沖區(qū)ptele1101,這里存儲的是要傳送到板型儀的數(shù)據(jù)。這是一個結(jié)構(gòu)指針,定義如下:

            typedef struct
            {
            teleheader msgheader; //消息頭
            tele1101block1 msgblock1; //消息第一部分
            tele1101block2 msgblock2; //消息第二部分
            tele1101block3 msgblock3; //消息第三部分
            } tele1101, *ptele1101;
            ptele1101 ptele1101;

              這其中teleheader、tele1101block1、tele1101block2和tele1101block3也分別是一個結(jié)構(gòu),這里就不詳述了。

              本實例中使用另外一個線程來處理以太網(wǎng)的,這樣不會中斷處理dde數(shù)據(jù)的過程。

            dword dwthreadid;
            thread=createthread(null,0,(lpthread_start_routine )
            sockthread,null,0,dwthreadid);
            sockthread為線程的過程函數(shù),具體實現(xiàn)如下:
            void sockthread()
            {
            int i=0;
            tchar buf[256];
            initwinsock();//初始化socket
            //創(chuàng)建并設(shè)置協(xié)議類型,地址和端口
            socket socksrv=socket(af_inet,sock_stream,0);
            sockaddr_in addrsrv;
            addrsrv.sin_addr.s_un.s_addr=htonl(inaddr_any);
            addrsrv.sin_family=af_inet;
            addrsrv.sin_port=htons(5001);
            //綁定并監(jiān)聽端口
            bind(socksrv,(sockaddr*)addrsrv,sizeof(sockaddr));
            listen(socksrv,5);
            sockaddr_in addrclient;
            int len=sizeof(sockaddr);
            while (1) //程序正常運行時,始終接收連接請求
            {
            sockconn=accept(socksrv,(sockaddr*)addrclient,len);
            zeromemory(buf,sizeof(buf));
            __try
            {
            while (1) //連接建立后每50秒交換一次數(shù)據(jù)
            {
            len=send(sockconn,(char *)ptele1101,sizeof(tele1101),0);
            len=recv(sockconn,(char *)ptele1102,sizeof(tele1102),0);
            if (0==len || socket_error==len)
            {
            len=wsagetlasterror();
            raiseexception(1,0,0,null);
            }
            sleep(50);
            }
            }
            __except(exception_execute_handler)
            {
            closesocket(sockconn);
            }
            }
            closesocket(socksrv);
            wsacleanup();
            }

              這里ptele1102為接收數(shù)據(jù)的緩沖區(qū),也是一個結(jié)構(gòu),定義與ptele1101類似,此處不詳述。

              從mb+網(wǎng)來的數(shù)據(jù)在使用dde協(xié)議獲取后存入緩沖區(qū)ptele1101,發(fā)送到板型儀,從板型儀來的數(shù)據(jù)存入緩沖區(qū)ptele1102,相關(guān)數(shù)據(jù)再使用dde協(xié)議寫回到mb+網(wǎng),這樣就實現(xiàn)了mb+網(wǎng)和以太網(wǎng)的。

            4 結(jié)束語

              本文介紹的的方法編程實現(xiàn)起來比較容易,代碼量較少,能很好的解決異種網(wǎng)絡(luò)間的數(shù)據(jù)交換的需求,并在單機架平整機板型控制系統(tǒng)中得到了成功的應(yīng)用,取得了滿意的效果。文中介紹的使用dde協(xié)議和socket協(xié)議處理數(shù)據(jù)的方式有較好的通用性,經(jīng)過簡單修改既可以用于其他的系統(tǒng)。另外通過簡單的擴展,即可實現(xiàn)數(shù)據(jù)采集和分析的功能。可以廣泛應(yīng)用于工業(yè)控制的各個領(lǐng)域。


            上一頁 1 2 3 4 下一頁

            評論


            相關(guān)推薦

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

            關(guān)閉