看板 C_and_CPP 關於我們 聯絡資訊
開發平台(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)
CMJ0121:是network還是IPC阿? 11/28 15:22
BIAO:不是IPC哦,算是開發出一套系統,所有的Process皆在同一機子 11/28 15:43
johnpage:盡量用現有的架構,不然系統龐大後,工程師會累死 11/28 17:01
※ 編輯: BIAO 來自: 140.124.42.70 (11/28 19:23)
BIAO:j大,這個系統架構是小弟所規劃的,目前已有部份功能完成。 11/28 19:24
johnpage:相信你的系統有ㄧ定的成熟度,只是跟你分享自己的經驗 11/28 19:44
bdvstg:決定一下哪些東西要AB之間傳,哪些透過資料庫,分類一下 11/28 22:20
bdvstg:既然用資料庫那就建議可以做一些簡單的正規化 11/28 22:21
bdvstg:然後看要不要把合法的ID、功能號碼、數值 統一用資料庫管理 11/28 22:28
BIAO:謝謝j大的分享.. 我的系統沒有成熟度= = 要從無到有.. 11/29 12:18
BIAO:謝謝b大的建議哦 會去想想該怎麼處理您所說的^^ 11/29 14:55
kingstong:沒有VIRTUAL MACHINE你的通訊協定怎麼和現有的架構接軌? 11/29 16:08
k大您好..虛擬機器? 我沒有用過.. 主要是因為A程式目前已經完成(可同時讀取設備資訊及接受外部命令控制設備), 但教授指出我的程式是寫死的,需要用軟體自訂一個通訊格式。 他覺得應該要弄出一個方式,讓程式可以靈活一些。 (因為我目前的做法是,A程式收到1指令,則透過modbus tcp去做某設備的開啟; 收到2則去做某設備的關閉) ※ 編輯: BIAO 來自: 140.124.42.70 (11/29 17:45)
MOONRAKER:不要聽某k的,他來亂的,滿口virtual machine 11/29 18:20
kingstong:M大,我想問你如果沒有VIRTUAL MACHINE,那蘋果的電腦怎能 11/29 19:37
kingstong:灌WIN系列的作業系統而且執行WIN下面的執行檔?! 11/29 19:39
kingstong:不要跟我說那只是模擬介面,因為蘋果電腦確實可以跑 11/29 19:40
kingstong:WIN下面的執行檔 11/29 19:40
kingstong:ANDROID是以LINUX為核心寫出來的,iOS是蘋果自己的架構 11/29 19:54
kingstong:ANDROID的APP和iOS的app是無法相容的,你倒是說說為什麼? 11/29 19:56
Bencrie:我以為我走錯跑到 Programming 板 XD 11/29 22:16
bdvstg:此文之目的不需要VIRTUAL MACHINE也可達成 11/30 07:26
bdvstg:感謝Ben大的提示XD 11/30 07:27
MOONRAKER:人家問東你k某扯西,牛頭不對馬嘴,好厲害喔 11/30 13:25
kingstong:知道厲害就好 11/30 14:26
cobrasgo:king你到底在講什麼鬼啊…那為什麼tcp/ip在windows和蘋果 11/30 14:29
cobrasgo:上都能動而不需要virtual machine? 11/30 14:29
cobrasgo:基本上protocol的東西是platform independent的,了解嗎 11/30 14:30
kingstong:protocol converter,大概是有這種東西再做轉換吧\ 11/30 15:13
ah7675:不懂又在亂扯 難看死了 我看作業系統怎麼開機的你都不知道 11/30 15:28
kingstong:作業系統的多重開機,你是指這個嗎?!同一部電腦安裝不同 11/30 16:07
kingstong:OS?然後呢? 11/30 16:09
lulala453:如果你要處理的資料量不大的話,有考慮換成 SQLite嗎 11/30 16:19
loveme00835:討論方向請以語言實作為主 謝謝 11/30 16:26
kingstong:不客氣 11/30 16:28
kingstong:對不起我錯了,其實我都不懂,我是唬爛的,不要劣退我 11/30 17:16
kingstong:你可以水桶我,但不要劣退我,不然我就不能去八卦版了 11/30 17:18
mist719:如果你是modbus 讀取的register位置先分配好比較好管理 11/30 18:00
yvb:love大 終於來說話了? XD 11/30 18:01
yvb:基本上只要定好你自己的通訊協定, 實作試了沒問題應該就OK. 11/30 18:02
yvb:不管是用binary格式或text格式應該都不是問題. 11/30 18:17
yvb:但就像函式有參數跟回傳值, 送過去的命令就如同參數, 11/30 18:19
yvb:收到命令做完或處理錯誤,拒絕處理等,若有回傳訊息可能更好. 11/30 18:20
yvb:也有一些文字格式的通訊協定也許可以參考一下,如http,smtp等, 11/30 18:21
yvb:文字型通訊協定好處是容易用telnet之類工具就可測試除錯, 11/30 18:23
yvb:另外就是通訊協定是否可能未來需要擴充,如更多控制參數等. 11/30 18:24
yvb:因為看你的圖似乎有個未來要加入的部分,關係似乎尚不明確. 11/30 18:26
sardine:看圖只看的出 通訊的方式 看不出細節 如果你的三個 12/01 09:46
sardine:方塊(A.B.MySQL) 都很忙的話 要琢磨的點會發生在同步的問 12/01 09:47
sardine:題上 問題發生點大概會在各種資料存取的保護機制上 12/01 09:48
sardine:先想好怎麼樣保護好通訊資料處理的程序是正常不會被干擾的 12/01 09:50
sardine:再開始擴充 這樣比較不會debug到天荒地老 12/01 09:50
jimmytzeng:文中他所需要的,怎麼看都感覺不出需要virtual machine 12/01 12:05
BIAO:謝謝樓上的各位..問題已解決! 02/19 15:13