我的硬體裝置是使用的wifi串列埠模組,mcu將要傳送的資料通過wifi串列埠模組傳送出來。由於我需要的資料傳送頻率較高,且不需要可靠傳輸,所以採用了udp方式。為了在上位機上顯示收到的資料,需要用到win32的socket程式設計。結合網路上的資料,我的**整理如下:
// 標頭檔案
#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#include
#include
#include
#include
#include
#pragma comment(lib,"ws2_32.lib")
#pragma comment(lib, "winmm.lib")
using
namespace
std;
socket m_socket; //定義成全域性,這樣可以在各個函式之間使用
bool initwinsock() // 套接字初始化
else
}
return true;
}// 資料更新執行緒
dword winapi dataupdatethreadproc(lpvoid lpparam)
}
return
0; }
// 主函式
int _tmain(int argc, _tchar* argv)
; //要傳送的資料
if (sendto(m_socket,udpsndbuf,sizeof udpsndbuf,0,(struct sockaddr*)&server,len)!=socket_error) //傳送資料
需要說明的是,在資料接收過程中,使用了recvfrom函式,這個函式預設為阻塞通訊方式,即沒有資料時則執行緒停止在這裡,直到有資料為止,有多少資料讀多少資料,超過緩衝區大小時則僅保留前n個資料。
在資料處理程式中進一步新增資料顯示**,就可以在上位機中實時顯示mcu傳送的資料了。
C 上位機通過socket讀寫PLC
做上位機的同行應該有切實體會 由於某些廠家的通訊協議不開放的緣故,通訊是個很費勁的事,特別是和西門子的通訊。就我目前所知,通訊手段主要依賴於兩條路 a.opc,我們自己開發client端,server端借助simatic net 或者kepserver b.組態軟體,組態軟體就不說了,稍微會點程式設...
python通過UDP獲取本機IP
利用 udp 協議來實現的,生成乙個udp包,把自己的 ip 放如到 udp 協議頭中,然後從udp包中獲取本機的ip。這個方法並不會真實的向外部發包,所以用抓包工具是看不到的。但是會申請乙個 udp 的埠,所以如果經常呼叫也會比較耗時的,這裡如果需要可以將查詢到的ip給快取起來,效能可以獲得很大提...
微控制器與上位機通過串列埠通訊 筆記
先說什麼是串列埠?1 他是一種通訊介面,微控制器 io 口上的復用功能,上位機 電腦 和下位機 開發板 之間的資料傳輸。2 序列介面簡稱串列埠,也稱序列通訊介面或序列通訊介面 通常指 com 接 口 是採用序列通訊方式的擴充套件介面。3 序列介面 serial inte ce 是指資料一 位一位地順...