none
Serialport 與 ACK Command RRS feed

  • 問題

  • 想請教一下 最近拿到一份文件上面有提到ACK

    但我嘗試去連結都沒反應

    文件敘述

    Transmission example: D11
    ACK: D1,AW,1
    Parameter error: E6

    但試著整個字串送出

     serialPort1.WriteLine("D11");

    以及拆成byte送出

    byte[] acktest = new byte[] { 0x0D, 0x01, 0x01 };
    serialPort1.Write(acktest,0,acktest.Length);

    都不行,有人可以指點一下ACK Command該怎麼透過serial做溝通

    2014年5月9日 上午 04:12

解答

  • 從 PC 傳到設備 D1X

    ACK 是設備傳給你的.

    看起來是要把D11 轉成 ACSII , 要不就是用 Wirte(String) 這個多載, 但我的建議是寫傳輸最好還是用 Write(Byte[],Int32,Int32)

    WriteLine 會在結尾代換行符號, 所以會錯.


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

    • 已標示為解答 dodolon 2014年6月25日 上午 07:53
    2014年5月9日 下午 02:45
    版主

所有回覆

  • ACK ? 通常 ACK 只是用來通知設備說: 我收到了. 這件事而已吧.

    文件中應該會說明他的編碼原則才是

    PS: AW 在文件中的說明是甚麼 ?


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


    2014年5月9日 上午 05:01
    版主
  • 沒看到接收怎麼寫的?儀器設備型號是什麼?可以把文件上傳到網路硬碟如OneDrive嗎...
    2014年5月9日 上午 05:38
  • 因為有簽NDA不便說明設備及完整上傳

    但這只單純設定設備模式的指令

    X of command format is 1 byte fixed length. (NonPC=2, PC=1)
    X of ACK is 1 byte fixed length.
    Command format D1X
    ACK format D1,AW,X
    
    Reaction equipment is set Mode
    Transmission example D11 PC Mode
    ACK D1,AW,1 set “PC”
    Parameter error E6

    看起來是只要下達D11就會變成PC模式,D12就會變成NonPC模式

    正常指令下給設備後就會自動切換模式

    但目前一直沒有反應所以不知是我指令下法本身就錯,還是其他原因

    所以想先確認指令的下法該用WhiteLine 還是Write






    • 已編輯 dodolon 2014年5月9日 下午 01:30
    2014年5月9日 下午 01:28
  • 從 PC 傳到設備 D1X

    ACK 是設備傳給你的.

    看起來是要把D11 轉成 ACSII , 要不就是用 Wirte(String) 這個多載, 但我的建議是寫傳輸最好還是用 Write(Byte[],Int32,Int32)

    WriteLine 會在結尾代換行符號, 所以會錯.


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

    • 已標示為解答 dodolon 2014年6月25日 上午 07:53
    2014年5月9日 下午 02:45
    版主
  • 請問樓主, 這個問題解決了嗎 ? 請記得回覆

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

    2014年5月22日 上午 08:01
    版主
  • 最近有些事耽擱 昨天寫法改成

     char charLF = (char)10;
     char charCR = (char)13;
     byte[] ASCIIbytes = Encoding.ASCII.GetBytes(textBox1.Text + charCR + charLF);
    serialPort1.Write(ASCIIbytes, 0, ASCIIbytes.Length);

    所以當我下D11會轉成68 49 49 13 10

    write後我在DataReceived裡一直沒有接收到資訊

    我也有故意輸入錯誤 也沒有收到E6

    Parameter error E6

    想請教 是哪邊有問題嗎

    2014年6月14日 上午 02:52
  • 文件內有說後面要加 CR, LF 嗎 ?

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

    2014年6月14日 上午 03:18
    版主
  • 我今天發現他的serial setting有一點不一樣

    Signal speed: 9600 baud
    Data bit length: 8 bits
    Parity: None
    Stop bit: 1 bit
    Flow control: None
    Terminator: CR+LF

    我覺得是這部分我沒設定到

    我有查了一下要使用serialPort1.NewLine這屬性 但是後面我該怎麼設定?

    文件上也有提到

    1. Sending form of command
    Command character string + (CR+LF) is accepted by one-unit.
    (CR+LF) is used as a terminator. In the explanation after this, (CR+LF) is omitted.

    所以我覺得可能是我serialport的設定沒設好導致的


    2014年6月17日 上午 07:45
  • 用 NewLine 是為了用 WriteLine Method. 用 Write(Byte[] ...) 就不需要設定這個

    你 6/14 貼的寫法應該就可行. 先對照你的屬性設定對不對, 還有是不是需要 Enable RTS 或 DTR

    因為你的文件如此珍貴, 所以可以給的資訊如此之少, 實在沒法讓人真的有頭緒可以正確的判斷.


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


    2014年6月17日 上午 08:26
    版主
  • 因對方是外商比較嚴謹有簽個人NDA,所以不便透漏過多

    還是感謝您的回答

    serial的設定就如上述,文件內並沒有特別說到DTR RTS的設定

    且先前遇過的設備設定上都沒有提到

    Terminator: CR+LF 這樣的設定

    所以在想說會不會是因為這設定沒有做,導致訊號設備根本沒收到

    我再自己多試試

    2014年6月17日 上午 09:05
  • Terminator 應該就是指在命令 byte [] 的後兩個位元組是 CR,LF

    我覺得還是先把 RTS 和 DTR 設定成 Enable 試試


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

    2014年6月17日 上午 09:33
    版主
  • 哈哈~~~找到問題了  與DTR RTS沒有關係

    因為我用之前做的uart to usb的線來接,但裡面少了ttl電壓轉換的晶片

    週六去買了新的線材之後,目前都正常了


    另外問一下,已解答的選項怎麼不見了?
    • 已編輯 dodolon 2014年6月25日 上午 07:09
    2014年6月25日 上午 07:06
  • 因為之前太久沒回應,  我把型態改成討論, 現已改回

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

    2014年6月25日 上午 07:18
    版主