[問題] 使用C語言自定通訊協定

看板C_and_CPP作者 (超越自己)時間10年前 (2013/11/28 14:40), 編輯推噓17(17035)
留言52則, 15人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Linux ----------------------------------------------------------------------- 各位板友大家好, 目前小弟想用C語言來自定通訊協定,(因為現有的程式是用if、else寫死的..) 協定為3碼,第1碼為設備ID、第2碼為設備功能碼,第3碼為設備的數值, 想請問板友們.. 在這樣子的架構下,能否給小弟一些建議或是實現的方式呢? 還請板友們不吝回答,謝謝喔^^ 小弟附上系統架構圖:http://i.imgur.com/vKeqqRp.jpg?1 (臨時用小畫家畫的,請各位莫怪..) A.底層的C程式:是採用兩個執行緒的方式,一個不停的讀設備資訊,一個建socket server等候外部命令。(目前已用另一個C言語client端測試,下達1的命令,則某設備開 啟,是用if-else寫死的方式完成) B.人機介面:是採用PHP+CSS來完成,打算採用socket client的方式對A.程式下達命令。 目前已完成至MySQL要取設備的最後一筆資訊。 不知道的這樣子的描述,各位是否能夠理解呢?再次感謝大家的協助^^.. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.124.42.70 ※ 編輯: BIAO 來自: 140.124.42.70 (11/28 14:42) ※ 編輯: BIAO 來自: 140.124.42.70 (11/28 15:22)

11/28 15:22, , 1F
是network還是IPC阿?
11/28 15:22, 1F

11/28 15:43, , 2F
不是IPC哦,算是開發出一套系統,所有的Process皆在同一機子
11/28 15:43, 2F

11/28 17:01, , 3F
盡量用現有的架構,不然系統龐大後,工程師會累死
11/28 17:01, 3F
※ 編輯: BIAO 來自: 140.124.42.70 (11/28 19:23)

11/28 19:24, , 4F
j大,這個系統架構是小弟所規劃的,目前已有部份功能完成。
11/28 19:24, 4F

11/28 19:44, , 5F
相信你的系統有ㄧ定的成熟度,只是跟你分享自己的經驗
11/28 19:44, 5F

11/28 22:20, , 6F
決定一下哪些東西要AB之間傳,哪些透過資料庫,分類一下
11/28 22:20, 6F

11/28 22:21, , 7F
既然用資料庫那就建議可以做一些簡單的正規化
11/28 22:21, 7F

11/28 22:28, , 8F
然後看要不要把合法的ID、功能號碼、數值 統一用資料庫管理
11/28 22:28, 8F

11/29 12:18, , 9F
謝謝j大的分享.. 我的系統沒有成熟度= = 要從無到有..
11/29 12:18, 9F

11/29 14:55, , 10F
謝謝b大的建議哦 會去想想該怎麼處理您所說的^^
11/29 14:55, 10F

11/29 16:08, , 11F
沒有VIRTUAL MACHINE你的通訊協定怎麼和現有的架構接軌?
11/29 16:08, 11F
k大您好..虛擬機器? 我沒有用過.. 主要是因為A程式目前已經完成(可同時讀取設備資訊及接受外部命令控制設備), 但教授指出我的程式是寫死的,需要用軟體自訂一個通訊格式。 他覺得應該要弄出一個方式,讓程式可以靈活一些。 (因為我目前的做法是,A程式收到1指令,則透過modbus tcp去做某設備的開啟; 收到2則去做某設備的關閉) ※ 編輯: BIAO 來自: 140.124.42.70 (11/29 17:45)

11/29 18:20, , 12F
不要聽某k的,他來亂的,滿口virtual machine
11/29 18:20, 12F

11/29 19:37, , 13F
M大,我想問你如果沒有VIRTUAL MACHINE,那蘋果的電腦怎能
11/29 19:37, 13F

11/29 19:39, , 14F
灌WIN系列的作業系統而且執行WIN下面的執行檔?!
11/29 19:39, 14F

11/29 19:40, , 15F
不要跟我說那只是模擬介面,因為蘋果電腦確實可以跑
11/29 19:40, 15F

11/29 19:40, , 16F
WIN下面的執行檔
11/29 19:40, 16F

11/29 19:54, , 17F
ANDROID是以LINUX為核心寫出來的,iOS是蘋果自己的架構
11/29 19:54, 17F

11/29 19:56, , 18F
ANDROID的APP和iOS的app是無法相容的,你倒是說說為什麼?
11/29 19:56, 18F

11/29 22:16, , 19F
我以為我走錯跑到 Programming 板 XD
11/29 22:16, 19F

11/30 07:26, , 20F
此文之目的不需要VIRTUAL MACHINE也可達成
11/30 07:26, 20F

11/30 07:27, , 21F
感謝Ben大的提示XD
11/30 07:27, 21F

11/30 13:25, , 22F
人家問東你k某扯西,牛頭不對馬嘴,好厲害喔
11/30 13:25, 22F

11/30 14:26, , 23F
知道厲害就好
11/30 14:26, 23F

11/30 14:29, , 24F
king你到底在講什麼鬼啊…那為什麼tcp/ip在windows和蘋果
11/30 14:29, 24F

11/30 14:29, , 25F
上都能動而不需要virtual machine?
11/30 14:29, 25F

11/30 14:30, , 26F
基本上protocol的東西是platform independent的,了解嗎
11/30 14:30, 26F

11/30 15:13, , 27F
protocol converter,大概是有這種東西再做轉換吧\
11/30 15:13, 27F

11/30 15:28, , 28F
不懂又在亂扯 難看死了 我看作業系統怎麼開機的你都不知道
11/30 15:28, 28F

11/30 16:07, , 29F
作業系統的多重開機,你是指這個嗎?!同一部電腦安裝不同
11/30 16:07, 29F

11/30 16:09, , 30F
OS?然後呢?
11/30 16:09, 30F

11/30 16:19, , 31F
如果你要處理的資料量不大的話,有考慮換成 SQLite嗎
11/30 16:19, 31F

11/30 16:26, , 32F
討論方向請以語言實作為主 謝謝
11/30 16:26, 32F

11/30 16:28, , 33F
不客氣
11/30 16:28, 33F

11/30 17:16, , 34F
對不起我錯了,其實我都不懂,我是唬爛的,不要劣退我
11/30 17:16, 34F

11/30 17:18, , 35F
你可以水桶我,但不要劣退我,不然我就不能去八卦版了
11/30 17:18, 35F

11/30 18:00, , 36F
如果你是modbus 讀取的register位置先分配好比較好管理
11/30 18:00, 36F

11/30 18:01, , 37F
love大 終於來說話了? XD
11/30 18:01, 37F

11/30 18:02, , 38F
基本上只要定好你自己的通訊協定, 實作試了沒問題應該就OK.
11/30 18:02, 38F

11/30 18:17, , 39F
不管是用binary格式或text格式應該都不是問題.
11/30 18:17, 39F

11/30 18:19, , 40F
但就像函式有參數跟回傳值, 送過去的命令就如同參數,
11/30 18:19, 40F

11/30 18:20, , 41F
收到命令做完或處理錯誤,拒絕處理等,若有回傳訊息可能更好.
11/30 18:20, 41F

11/30 18:21, , 42F
也有一些文字格式的通訊協定也許可以參考一下,如http,smtp等,
11/30 18:21, 42F

11/30 18:23, , 43F
文字型通訊協定好處是容易用telnet之類工具就可測試除錯,
11/30 18:23, 43F

11/30 18:24, , 44F
另外就是通訊協定是否可能未來需要擴充,如更多控制參數等.
11/30 18:24, 44F

11/30 18:26, , 45F
因為看你的圖似乎有個未來要加入的部分,關係似乎尚不明確.
11/30 18:26, 45F

12/01 09:46, , 46F
看圖只看的出 通訊的方式 看不出細節 如果你的三個
12/01 09:46, 46F

12/01 09:47, , 47F
方塊(A.B.MySQL) 都很忙的話 要琢磨的點會發生在同步的問
12/01 09:47, 47F

12/01 09:48, , 48F
題上 問題發生點大概會在各種資料存取的保護機制上
12/01 09:48, 48F

12/01 09:50, , 49F
先想好怎麼樣保護好通訊資料處理的程序是正常不會被干擾的
12/01 09:50, 49F

12/01 09:50, , 50F
再開始擴充 這樣比較不會debug到天荒地老
12/01 09:50, 50F

12/01 12:05, , 51F
文中他所需要的,怎麼看都感覺不出需要virtual machine
12/01 12:05, 51F

02/19 15:13, , 52F
謝謝樓上的各位..問題已解決!
02/19 15:13, 52F
文章代碼(AID): #1IbkLc7a (C_and_CPP)