none
SerialPort 問題請教 RRS feed

  • 問題

  • 我有兩塊類似的硬體設備 兩者只差在硬體傳輸速率不同 一個是 (9600另外一個是 115200)

    問題 :

    在同個程式上 9600這台能正確的使用 DataReceived 方式 完整的接收到所有資料 , 同時發送出去的資料 硬體也能正確解析

    但同樣的程式 在115200那台機器 接收資料 只接收到正確的3位元 , 其他都不正確

    同時沒在丟資料時 serialport 還會自己收到感覺是某種 待命的字串 大概3秒傳一次 但是在終端機看不到

    而發送同樣內容的資料 9600正常解析 , 115200 變成了一堆亂碼 然後長度變得很長 ,比方說 我送dir , 可能會變成^Dwe3kfw (一堆無意義的組合)

    已確認 傳輸速率那些設定在終端機上 是可以正常顯示的 , 所以設定錯誤的機會應該比較低

    在我理解上 115200應該比 9600傳輸的還快 , 怎會發生資料傳輸不完整的狀況呢?

    另外有什麼解決方法嗎?

    還請各位專家 幫忙解惑 謝謝!

    2016年4月25日 上午 08:58

解答

  • 給你的網址第一邊看仔細。

    你送出去的東西,只是先送到緩衝區,作業系統會自動幫你扔出去。

    HEX 是給人看的,對於電腦來說,所有內容都是 bit 組成的 byte 。

    所以你是否一次寫出整串指令完全沒關係,但是通常你無法一次讀取整串指令。

    雜訊包含你所用的線材、你的速率。

    當你的速率越高,容錯率就越低,也就是說越容易受到干擾,傳輸距離就越短。

    傳輸率的提升,也需要確認設備端支援,SerialPort 通訊限制比 Socket 多很多,很多是硬體問題,含接頭、線材。


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    • 已標示為解答 月神之翼 2016年4月28日 上午 06:49
    2016年4月26日 下午 12:43
  • 我想那是 VT100 的控制碼, 因為你的終端機是 VT100 格式, 所以會把控制碼濾掉

    ANSI/VT100 Terminal Control Escape Sequences


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    • 已標示為解答 月神之翼 2016年4月28日 上午 06:49
    2016年4月27日 上午 11:47
    版主
  • 自己寫程式的話, 當然要自己在程式中寫程式碼把 VT 100 控制碼濾掉啊.

    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    • 已標示為解答 月神之翼 2016年4月28日 上午 06:49
    2016年4月28日 上午 02:56
    版主

所有回覆

  • 例如說 CPU 更好。 [.Net] 資料接收的常識

    例如說 雜訊。 [殘念] 電腦接地很重要


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2016年4月25日 下午 05:16
  • 原來如此 , 至於為何發送出去的會變亂碼 好像牽涉到即時發送這東西
    .
    之前都是使用 Write 直接送出 整串指令 , 但在 115200一次只能送出一個字 , 系統才會整合在一起
    再研究 如果轉換成 HEX方式來發送 能不能解決這個問題
    .
    再次的感謝你的回答
    2016年4月26日 上午 08:01
  • 給你的網址第一邊看仔細。

    你送出去的東西,只是先送到緩衝區,作業系統會自動幫你扔出去。

    HEX 是給人看的,對於電腦來說,所有內容都是 bit 組成的 byte 。

    所以你是否一次寫出整串指令完全沒關係,但是通常你無法一次讀取整串指令。

    雜訊包含你所用的線材、你的速率。

    當你的速率越高,容錯率就越低,也就是說越容易受到干擾,傳輸距離就越短。

    傳輸率的提升,也需要確認設備端支援,SerialPort 通訊限制比 Socket 多很多,很多是硬體問題,含接頭、線材。


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    • 已標示為解答 月神之翼 2016年4月28日 上午 06:49
    2016年4月26日 下午 12:43
  • 原來如此 , 這樣我了解了

    .
    問個困擾的問題 有個硬體設備 會不定期的發送 [5n 這個字串 , 但是在正規的終端機看不到

    但是在 VB.net 中的 SerialPort元件  會一直收到 , 有透過 AccessPort 監聽觀察了

    1.ˊ終端機

    http://i.imgur.com/f4VCI3m.png

    2. 一般通訊

    http://i.imgur.com/Qu0IZP2.png

    .

    大大知道 這是什麼緣故嗎? , 因為只想過濾掉這類 終端機看不到 但是 一般通訊 系統收的到的訊息 , 謝謝

    2016年4月27日 上午 08:16
  • 我想那是 VT100 的控制碼, 因為你的終端機是 VT100 格式, 所以會把控制碼濾掉

    ANSI/VT100 Terminal Control Escape Sequences


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    • 已標示為解答 月神之翼 2016年4月28日 上午 06:49
    2016年4月27日 上午 11:47
    版主
  • 原來如此 , 我在硬體的COM選項有看到類似的選項

    VT100 ,LINUX ,XTERMR6 ,SCO ,ESCN ,VT400  這幾組可選 預設果然如樓上所說的VT100

    我有搜尋過 SerialPort在vb.net 似乎沒有VT100這類的選項可以選 , 網路上也沒有對這部分有很多資訊

    不知道 大大 對 VT100 ,LINUX ,XTERMR6 ,SCO ,ESCN ,VT400   這幾組設定 有沒有比較熟的?

    因為該硬體目前不在手邊 短時間也拿不到 , 小弟我 ...完全沒輒 沒法去測試 , 只要系統不丟出控制碼就行了

    謝謝各位大大的解惑 , 因為小弟我從來都沒遇過硬體裝置會丟控制碼的案例 , 所以遇到這種完全沒有頭緒. 再次的感謝 

    2016年4月28日 上午 01:50
  • 自己寫程式的話, 當然要自己在程式中寫程式碼把 VT 100 控制碼濾掉啊.

    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    • 已標示為解答 月神之翼 2016年4月28日 上午 06:49
    2016年4月28日 上午 02:56
    版主
  • 對了, 如果你的問題已經解決, 請標示解答 (可複選), 以利論壇結案, 謝謝.

    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2016年4月28日 上午 03:00
    版主