VB經由RS232,怎麼傳送大於128以上的數值到8051? |
答題得分者是:src
|
nienwenhsun
一般會員 發表:1 回覆:4 積分:1 註冊:2009-04-24 發送簡訊給我 |
|
penguin5
資深會員 發表:116 回覆:317 積分:431 註冊:2004-05-09 發送簡訊給我 |
|
nienwenhsun
一般會員 發表:1 回覆:4 積分:1 註冊:2009-04-24 發送簡訊給我 |
如果改成16進制再送
129變成81,VB送出去會先送8再送1, 51接收後 是可以先將8轉成2進制丟到高4位元 1就丟低4位元 不過這樣就變丟兩次 會增加時間 不知道還有沒有其它的好方法呢? 可以送一次就得到128以上的數值 感謝penguin5 大大的回答 ===================引 用 penguin5 文 章=================== 將129改成16進位81在傳送到51,接收後再轉成10進位.
編輯記錄
nienwenhsun 重新編輯於 2009-05-29 17:04:10, 註解 無‧
|
src
高階會員 發表:1 回覆:94 積分:154 註冊:2005-08-23 發送簡訊給我 |
[code delphi] Dim tx_byte(0) As Byte Comm1.InputMode = 1 tx_byte(0) = (0→255) '要傳送的內容 Comm1.Output = tx_byte '傳送資料到RS-232C Comm1.InputMode = 0 [/code] ===================引 用 nienwenhsun 文 章=================== 小弟vb有將資料先轉成byte com.output = ChrB ( 129 ) 在傳送到51 只是51接收進來一樣是00 不知道有沒有方法能解決rs232傳送大於128以上的數值?? |
nienwenhsun
一般會員 發表:1 回覆:4 積分:1 註冊:2009-04-24 發送簡訊給我 |
如果pc對pc..src大大的方法是沒有問題
不過因為是pc對8051... 雖然output的data用byte送出 可是51接收進來的data還是錯誤 這也是我目前遇到的問題 感謝src大大方回答 不知道還有沒有其它的方法? thx.. ===================引 用 src 文 章=================== [code delphi] Dim tx_byte(0) As Byte Comm1.InputMode = 1 tx_byte(0) = (0→255) '要傳送的內容 Comm1.Output = tx_byte '傳送資料到RS-232C Comm1.InputMode = 0 [/code] |
carstyc
資深會員 發表:16 回覆:254 積分:329 註冊:2003-07-18 發送簡訊給我 |
pc -> 8051 應該沒有所謂 128 的限制吧。
我記得以前做的時候,傳 0 - 255 都沒有問題啊。 是不是你兩邊的 BaudRate / Parity Check / ByteSize / Stopbit 沒有設一致 ===================引 用 nienwenhsun 文 章=================== 如果pc對pc..src大大的方法是沒有問題 不過因為是pc對8051... 雖然output的data用byte送出 可是51接收進來的data還是錯誤 這也是我目前遇到的問題 感謝src大大方回答 不知道還有沒有其它的方法? thx.. ===================引 用 src 文 章=================== [code delphi] Dim tx_byte(0) As Byte Comm1.InputMode = 1 tx_byte(0) = (0→255) '要傳送的內容 Comm1.Output = tx_byte '傳送資料到RS-232C Comm1.InputMode = 0 [/code] |
nienwenhsun
一般會員 發表:1 回覆:4 積分:1 註冊:2009-04-24 發送簡訊給我 |
兩邊的鮑率都設定一樣
如果設定不同 資料接收會不正確 目前傳0~127的資料都是正常 大於128以上就會變成0 (255是ok的) VB目前試過用Bit & Byte輸出.. 但51接收都不行 ===================引 用 carstyc 文 章=================== pc -> 8051 應該沒有所謂 128 的限制吧。 我記得以前做的時候,傳 0 - 255 都沒有問題啊。 是不是你兩邊的 BaudRate / Parity Check / ByteSize / Stopbit 沒有設一致
編輯記錄
nienwenhsun 重新編輯於 2009-06-03 08:57:33, 註解 無‧
|
carstyc
資深會員 發表:16 回覆:254 積分:329 註冊:2003-07-18 發送簡訊給我 |
RS232 是用一個bit 一個bit在傳送,所以設定上不只是 baud rate 有關, Parity Check / ByteSize / Stopbit 的設定也都會影響傳送跟接收一致性。
另外你說 128 送會收到 0 ,但 255 送卻是正常。 128 -> 10000000 異常 256 -> 11111111 正常 這邏輯上似乎怎麼想都不通。有沒有可能是你 8051 上的接收程式處理邏輯有問題,導致收到訊息誤判為0。 ===================引 用 nienwenhsun 文 章=================== 兩邊的鮑率都設定一樣 如果設定不同 資料接收會不正確 目前傳0~127的資料都是正常 大於128以上就會變成0 (255是ok的) VB目前試過用Bit & Byte輸出.. 但51接收都不行 ===================引 用 carstyc 文 章=================== pc -> 8051 應該沒有所謂 128 的限制吧。 我記得以前做的時候,傳 0 - 255 都沒有問題啊。 是不是你兩邊的 BaudRate / Parity Check / ByteSize / Stopbit 沒有設一致 |
nienwenhsun
一般會員 發表:1 回覆:4 積分:1 註冊:2009-04-24 發送簡訊給我 |
這是我51的程式:
ORG 00H START: MOV SCON,#01010000B MOV TMOD,#00100000B MOV PCON,#10000000B MOV TH1,#255 SETB TR1 MER1 MAIN: JB RI,FINISH JMP MAIN FINISH: MOV A,SBUF MOV P1,A ;P1直接接LED燈 CLR RI JMP MAIN END 不知道51的程式設定上有沒有問題 煩請大大幫我看一下 THx..... ===================引 用 carstyc 文 章=================== RS232 是用一個bit 一個bit在傳送,所以設定上不只是 baud rate 有關, Parity Check / ByteSize / Stopbit 的設定也都會影響傳送跟接收一致性。 另外你說 128 送會收到 0 ,但 255 送卻是正常。 128 -> 10000000 異常 256 -> 11111111 正常 這邏輯上似乎怎麼想都不通。有沒有可能是你 8051 上的接收程式處理邏輯有問題,導致收到訊息誤判為0。 |
src
高階會員 發表:1 回覆:94 積分:154 註冊:2005-08-23 發送簡訊給我 |
您好:
您的問題我之前也遇過,就是用下列方式解決。 先宣告陣列變數tx_byte(0)然後將tx_byte(0)=要傳送的內容, 在用陣列變數的名稱tx_byte傳送出去就可以。 Dim tx_byte(0) As Byte Comm1.InputMode = 1 tx_byte(0) = (0→255) '要傳送的內容 Comm1.Output = tx_byte '傳送資料到RS-232C Comm1.InputMode = 0 ===================引 用 nienwenhsun 文 章=================== 這是我51的程式: ORG 00H START: MOV SCON,#01010000B MOV TMOD,#00100000B MOV PCON,#10000000B MOV TH1,#255 SETB TR1 MER1 MAIN: JB RI,FINISH JMP MAIN FINISH: MOV A,SBUF MOV P1,A ;P1直接接LED燈 CLR RI JMP MAIN END 不知道51的程式設定上有沒有問題 煩請大大幫我看一下 THx..... ===================引 用 carstyc 文 章=================== RS232 是用一個bit 一個bit在傳送,所以設定上不只是 baud rate 有關, Parity Check / ByteSize / Stopbit 的設定也都會影響傳送跟接收一致性。 另外你說 128 送會收到 0 ,但 255 送卻是正常。 128 -> 10000000 異常 256 -> 11111111 正常 這邏輯上似乎怎麼想都不通。有沒有可能是你 8051 上的接收程式處理邏輯有問題,導致收到訊息誤判為0。 |
lishang83
初階會員 發表:12 回覆:44 積分:31 註冊:2005-07-30 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |