一、問題描述
因公司硬體需求,將產品改良後,由原先的藍芽連線方式,
加入了無線網路wifi 的方式接收訊息~
如何先透過藍芽自動與電腦建立好連線後,
再透過藍芽下指令給產品硬體端,
接續藍芽再與無線wifi 建立好連線,
最後再由無線AP端來接訊號~
二、新接觸到的網管軟體
因為我對於網路方面的知識非常的『弱~』,
所以一直想逃丫~
透過google大神搜尋了相關資訊,
有小小閱讀障礙的我仍是想投降~
想說:『我可否不要去接觸到網路嗎?』
但又因為和我一同奮鬥的伙伴最近休假,
只好我先硬著頭皮來了解此區塊,
以防到時來不及交差~
但
真的,是用拼湊的方式先了解與先把一個初步的架構弄出來~
因此,也學了一點東東啦~
先來介紹學到的軟體
1. Docklight (此軟體可直接透過藍芽的方式去做測試)
(此為試用版,缺點是所輸入的測試指令等重開機後,每次都得再重新輸入)
(或您亦可先複製存在文字檔內,到時再用貼上的方式,可省一些重覆輸入之時間)
設定藍芽所連結到的port,方便到時溝通使用。
設定指令(※ 平時用的大多為十進制(Decimal)有英文字的部份需改用(ASCII)來編碼)
依您個人的需求去選擇您指令要以什麼樣的編碼模式去執行
(所以這部份亦需先了解硬體方面的設計模式喔~)
輸入完成後的指令頁面,到時可按指令名稱前方的『-->』進行執行的動作。
執行後,右方空白處,會顯示您所傳入的指令/接收到的硬體回應訊息等資訊。
2. Wireshark (此軟體可用來監看網路封包的傳遞情形)
啟動wireshark軟體,啟動前需先選擇您要監看的網路
如:藍芽 或是 區域連線
啟動後,在同一網域區段皆會顯示監聽結果,
雙按有興趣的部份可再進一步的去看他傳送或接收到的封包。
若
顯示監看的連線太多時,
可再透過filter 來篩選要看的條件,
如:在此,我想看協定protocol為UDP的部份,
且UDP的連接埠為8888
則我會於filter 指令部份下『udp.port == 8888』,
來進行篩選動作。
三、方法
1. C# 藍芽連線
//連接藍芽
ports = SerialPort.GetPortNames();
serialPort = new SerialPort();
serialPort = new SerialPort("COM11", 115200, Parity.None, 8, StopBits.One);
serialPort.Open();
2. C# 透過藍芽下指令給硬體
byte[] bt_apinfoCmd = { 008, 049, 050, 051, 052, 053, 054, 055, 056, 0 };
serialPort.Write(bt_apinfoCmd, 0, 10); //下指令RX (PC傳送給BT藍芽)
serialPort.Read(bt_rev, 0, 3); //接收指令TX (藍芽回送給PC訊息)
3. C# wifi無線部份
網路上有許多大家已寫好的方式可參考,
此部份需先建立好socket,
與連上網路,
最後才能獲得我要的資料。
宣告
using System.Net;
using System.Net.Sockets;
程式部份
//Setting IPEndpoint
IPEndPoint IPEnd = new IPEndPoint(IPAddress.Any, socket_port);
//IPEndPoint IPEnd = new IPEndPoint(IPAddress.Parse("127.0.0.70"), socket_port);
Socket Client = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
需看您的傳輸模式是用TCP或UDP,在此設定會有點差異。
//Binding Endpoint
Client.Bind(IPEnd);
EndPoint IP = (EndPoint)IPEnd;
int m_RecieverBuffer = 1024; //若設定太小會有問題喔~
byte[] m_getdata = new byte[m_RecieverBuffer];
string input;
while (true)
{
try
{
recv = Client.ReceiveFrom(m_getdata, ref IP);
input = Encoding.UTF8.GetString(m_getdata, 0, recv); //把接收的byte資料轉回string型態
。。。。。。
}
catch (Exception ex)
{
throw;
}
}
以上大概為我的解決方式囉~供自己記錄一下學習的狀況。
留言列表