我用VB串列埠接收從DSP傳送過來的實時資料,每2ms位元組,前面左右的位元組都能正確接收

2022-12-22 03:36:22 字數 3291 閱讀 5502

1樓:

每0.2ms就收一個位元組,這要求你的程式要有很高的實時性。vb 不是最好的工具,c甚至是彙編更為合適。

你的程式效能有問題,執行速度太慢,

如果用vb:

1. 你要用中,高階的程式設計方法來編, 你的資料的快速和連續性,要求你的程式要有很高速度處理資料。

2 你的問題是. 當你執行一段時間後,你必須要在0.2秒內連續的一端要完成接收,另一端要處理資料,而且快取也大體滿了。

如果你的程式效能達不到0.2秒完成所有的操作,那你的快取就會遲早溢位。問題就發生啦。

3 為了確認就是上述問題,你把dsp改為發10秒左右,停發2 至3秒,再發10秒:如果這樣你的程式能長期執行,那就是上述問題。

2樓:匿名使用者

首先確認這個現象是週期性出現的,即連續跑一段時間都是每隔6000個左右出現一次。如果是,則很有可能是程式中存在bag,排除方法參考:先粗略估算一下錯誤出現的間隔時間,然後查詢程式中執行時間與之對等的部分。

如果錯誤不是週期性的可能的情況有:1、通訊速率較快造成錯誤,適當的加點延時;2、個別資料型別不匹配,如上傳整形卻按照浮點型接收;3、通訊地址與設計的不匹配等等。如果通訊量較大建議先固定重複讀少量地址內容,排除通訊是否有問題。

3樓:匿名使用者

如果是週期性出現的,就按照cannonfish的方法解決,他說的已經很詳細了,如果不是週期性的出現,很有可能是你開闢的快取區不夠大,導致資料溢位被丟棄,也有可能是你的通訊節拍沒有對上,即vb端波特率和dsp端的波特率設定的不對等。

4樓:匿名使用者

主要是快取問題,資料多了會卡,資料儲存到檔案或資料判斷後丟棄,就是不要佔用太大記憶體。

請教用vb.net向串列埠傳送16進位制的數的方法

5樓:啟巖

應該是你的轉換格式不正確,下面**就是將文字框中以一個空格隔開的十六進位制轉為位元組的**,文字框中數字格式為:01 02 03

dim testarray() as string = split(textbox1.text)

dim hexbytes() as byte

redim hexbytes(testarray.length - 1)

dim i as integer

for i = 0 to testarray.length - 1

next

serialport.write(hexbytes, 0, hexbytes.length)

如果有問題可以再聯絡。

6樓:

我用03做過串列埠通迅程式,跟vb一個樣的啊。沒啥區別。輸出時候做成一個byte陣列,按順序把你的數值賦進去,比如你填255,發出去的時候就是ff,加一個串列埠控制元件,把引數設定成與終端區配的。

然後dim aa(1) as byte

aa(0)=35

comm1.outbuffer=aa

7樓:

用byte陣列已經是最基本的方式了!與系統無關,與平臺無關,與開發語言無關,與進位制無關.........

8樓:匿名使用者

vb串列埠通訊,有一套非常好的技術資料,600m多,你在**搜尋"太陽雨vb串列埠通訊技術資料"就可以找到 / ..

串列埠rs232無法接收到資料

9樓:用q戶名

方法一:直接在pc端用線短接2、3腳(拿金屬鑰匙就行),機端用串列埠助手/精靈之類的軟體實時傳送接收,會接收到自己發出的資料,這樣可以說明引腳沒錯且pc端串列埠正常;

方法二:檢查設定的波特率與pc接收的是否一致,檢查傳送方式同步還是非同步勿混淆;

方法三:交叉一下收/發資料線次序,可能給弄反了;

方法四:懷疑一下用的串列埠助手,有些軟體可能是不可靠的,換一個試試,這個情況遇到過。

10樓:匿名使用者

dsp可以接收到資料,你用示波器可以看到有波形,說明你的串列埠rs232有資料從外面進入pc,那麼dsp會接受到資料有波形 這個是正常的,你的這個資料訊號屬於rx,接受作用,資料還有tx傳送訊號,但是傳送的話就是要dsp發訊號從串列埠rs232出來,那麼要看你要怎麼操作讓dsp發出訊號了,一般我們這裡測試的話,要讓一個晶片發出訊號,必須要發包,你用232和dsp(2812)通訊,但是兩端有成功通訊嗎,你要確定可以正常通訊資料互流才可以有訊號的,檢查你是不是設定有問題。

11樓:匿名使用者

如果訊號線是你自己接的,注意,rs232介面的接法並不是一對一的的接法,公口和母口的接法並不是一接

一、二接

二、三接三的接法

12樓:匿名使用者

是不是電腦上開了奇偶校驗?收到的東西校驗會不通過。

關掉校驗試試。

我想用spi通訊方式傳送一組連續的64位資料,可是微控制器一次只能傳8位資料。

13樓:匿名使用者

只能迴圈8次,每次傳送8位。就是一個位元組。這樣做其實就是一次傳送了64位。

中間可以認為沒時間停滯的,因為間隔時間太短了。或者你把資料放入一個float型別的4位元組裡,傳送2次。

14樓:匿名使用者

那就是要傳送8個位元組,順序傳送完就可以了的啊。把64位的資料做成8位元組的陣列。

關於vb串列埠實時資料傳送接收的問題

15樓:匿名使用者

你好!!

不要採用for 這樣的迴圈語句;

vb中新增定時器,採用定時器來完成迴圈傳送和讀取;

這樣傳送的時間間隔,可以由定時器來設定

16樓:匿名使用者

類似 modbus 的輪詢

vb 串列埠嘛

看書visual_basic與_rs-232_序列通訊控制也有個 連線 多 rs232 的模組

e232h4 4路rs-232高速隔離集線轉換器特點▶ 實現一個串列埠裝置與4個串列埠裝置主從式通訊▶ 專用工業導軌槽模組

▶ 兩端訊號保持光電隔離;

▶ 全面容錯機制,一路從節點損壞不影響其他節點通訊

關於vb接收dps資料的問題

17樓:

試著製作一個檔案協議。用串列埠傳送的時候,將資料的全1,標記為「下一個要傳的是第二個資料」,全零標記為「下一個要傳的是第一個資料」

用串列埠模擬CAN匯流排報文的接收,如何判斷一條完整報文已經接收完

不清楚你的接收端是什麼,如果是微控制器,檢視一下can接收暫存器標誌位,如果是pc,直接看接收到的是不是8位元組就可以了 用 轉換抄 器 吧ecan200 rs 232 rs 485 rs 422與canbus隔離轉換器襲 特點 聰明型 bai設計,支援rs 232 rs 485 422三種訊號du...

我用順豐發了快遞,但接收方無法直接收到快遞,需要自己去取,能否讓收件人再聯絡一家快遞代收再送過去

聯絡順豐,讓他們發快遞即可,運費肯定是到付了。只要不遇見稀世罕見的懶蛋問題都不大。我遇到過,給他們領導打 他們就會開車去送啦。我用順豐發了快遞,但接收方無法直接收到快遞,需要自己去取。你好,針對你這個問題,我以前也是遇到過的。如果收件人另外聯絡一家快遞去取,順豐是不會接受的,你可以要求順豐將快遞轉e...

我用51微控制器,跟3 3V藍芽通訊,寫了串列埠通訊的小程式

一般出現亂碼都是波特率不正常導致。晶振11.0592mtmod 0x25 計數器0工作方式1,定時器1工作方式2 scon 0x50 串列埠工作方式1th1 0xfa 串列埠波特率4800tl1 0xfa ea 1 es 1 tr1 1 我認為也是波特率的問題,你可以調高波特率或降低試試,但兩者波特...