如何檢測(cè)串口連接正常

如何檢測(cè)串口連接正常

可以通過(guò)我的電腦——屬性——設(shè)備管理器——端口(COM)——USB SERIAL如果能再端口里面看到USB SERIAL,就說(shuō)明串口與電腦連接正常。具體如下:串口與電腦連接時(shí),可以看到端口(COM和LPT),里面有USB串口字樣就對(duì)了(全英文)串口連接移除后,端口就不見(jiàn)了。

如果串口連接了,缺看不到,可以這樣:下載驅(qū)動(dòng),安裝好驅(qū)動(dòng)程序,重新連接一下電腦。

(安裝驅(qū)動(dòng)的時(shí)候不能拔除串口連接)(要選擇正確的版本,有的驅(qū)動(dòng)是XP的,有的是WIN7等)。換一條串口線。一般這樣就百科行了(STC12C5A60S2的USB轉(zhuǎn)串口的,一般串口也差不多)。

串口通訊中要發(fā)送字符型數(shù)據(jù)接收時(shí)怎樣判斷接收完畢

你之前用的隊(duì)列結(jié)構(gòu)是完全可行的。有幾個(gè)問(wèn)題你必須清楚:1.讀取txt文件中的數(shù)據(jù),txt中數(shù)據(jù)是*的,也就是說(shuō)讀取過(guò)程叫做—-數(shù)據(jù)回放2.讀取實(shí)際信息的數(shù)據(jù),數(shù)據(jù)是活的,通??梢越凶觥?jiǎng)討B(tài)數(shù)據(jù)采集(實(shí)時(shí)采集)針對(duì)**點(diǎn)來(lái)說(shuō):數(shù)據(jù)回放,是指要求你把已經(jīng)有的數(shù)據(jù),按不同的時(shí)間段進(jìn)行回放,這需要你對(duì)txt文件中的數(shù)據(jù)的格式,怎么回放,回放時(shí)間間隔把握好。

這個(gè)我建議你先不要做,因?yàn)閿?shù)據(jù)回放就是把數(shù)據(jù)一個(gè)個(gè)拿出來(lái),再按時(shí)間排列去一個(gè)個(gè)顯示出去,不如實(shí)時(shí)采集來(lái)的直接。

第二點(diǎn),實(shí)時(shí)采集,也就是說(shuō),數(shù)據(jù)來(lái)源可以有兩種:1.真實(shí)數(shù)據(jù)。2.模擬數(shù)據(jù)。在你之前的范例程序中,也就是“基礎(chǔ)隊(duì)列.vi”中,在循環(huán)內(nèi)部的隨機(jī)數(shù)模塊,就是模擬數(shù)據(jù)。也就是說(shuō),是人為做的一個(gè)循環(huán)隨機(jī)數(shù)。

而真實(shí)數(shù)據(jù),就是實(shí)際采集到的數(shù)據(jù)(替換模擬數(shù)據(jù))。真實(shí)數(shù)據(jù)來(lái)源有很多種,比如,串口通訊,接收到的不停變換的數(shù)據(jù)(動(dòng)態(tài)數(shù)據(jù))。在最初做這個(gè)項(xiàng)目的時(shí)候,我的建議是,如果不了解真實(shí)數(shù)據(jù)(板卡數(shù)據(jù)采集/通訊等),那么就使用模擬數(shù)據(jù),在labview中有很多可以模擬的子VI,比如正玄波發(fā)生器等等。

或者,人為造信號(hào),比如之前的“基礎(chǔ)隊(duì)列.vi”中,范例造的隨機(jī)數(shù)信號(hào)。這里就涉及到你之前問(wèn)的一個(gè)問(wèn)題,數(shù)—字符串。(這些是計(jì)算機(jī)基礎(chǔ)知識(shí))字符在c語(yǔ)言中是char類型,在數(shù)據(jù)的傳遞中,字符串是以ASCII碼形式傳輸?shù)?,說(shuō)白了也是數(shù)只不過(guò)比如“s”對(duì)應(yīng)的ASC碼數(shù)是“78”(沒(méi)查表只是舉例)。

在內(nèi)存中占1個(gè)字節(jié)。所以,當(dāng)以字符串傳遞數(shù)據(jù)的時(shí)候,數(shù)的表現(xiàn)形式往往是人看不懂的,因?yàn)槭茿SC碼所以,你傳遞整數(shù),傳遞字符串,其道理是一樣的,只是如何能讓人來(lái)讀懂這些數(shù)。所以“基礎(chǔ)隊(duì)列.vi”中的隨機(jī)數(shù)vi是以double雙精度數(shù)傳遞的一個(gè)數(shù),而你所要做的就是把這個(gè)隨機(jī)數(shù)vi換成字符串的輸出形式。

labview查找數(shù)組轉(zhuǎn)字符串這個(gè)vi或字符串轉(zhuǎn)8位數(shù)組這個(gè)vi,然后查看如何使用,可以幫助你,而demo的“基礎(chǔ)隊(duì)列.vi”程序可以保留,你所要做的就是以上說(shuō)的這些基礎(chǔ)。

vb 判斷串口是否接收完成問(wèn)題,謝謝

?Private?Sub?MSComm1_OnComm()?\’……?If?MSComm1.CommEvent?=?2?Then?Cheng=0?\’……?End?IfEnd?Sub

Modbus通信協(xié)議的數(shù)據(jù)接收 程序中,如何判斷一次數(shù)據(jù)接受已經(jīng)完畢?

無(wú)需關(guān)心數(shù)據(jù)是否接收完畢,只要有數(shù)據(jù)發(fā)過(guò)來(lái),都收到自己的緩沖區(qū)當(dāng)中。
在應(yīng)用層,打開(kāi)一個(gè)任務(wù)以定期掃描緩沖區(qū)中的新數(shù)據(jù)。

如果有新數(shù)據(jù),確定其是否為必需的協(xié)議幀。

通過(guò)幀頭幀尾標(biāo)識(shí)符還有校驗(yàn)等判斷接收幀的正確性,如果正確再處理,不正確丟棄。
Modbus沒(méi)有固定的幀頭標(biāo)記,長(zhǎng)度也沒(méi)有固定。 判斷時(shí),首先查找具有正確地址的字符,然后找出后續(xù)功能代碼是否正確。 根據(jù)功能代碼,確定后續(xù)數(shù)據(jù)有多長(zhǎng)并進(jìn)行校驗(yàn)。

如果驗(yàn)證正確,則說(shuō)明幀是正確的。

擴(kuò)展資料:
舉例說(shuō)明如下:
從站地址03,從0開(kāi)始讀取10個(gè)寄存器,則接收到的幀為03 03 00 00 00 0a xx xx,查找從站地址03的字節(jié),找到后,以下功能碼為03,符合功能碼范圍。
該功能碼的數(shù)據(jù)包括固定為8個(gè)字節(jié)的校驗(yàn)和,然后在其后沒(méi)有8個(gè)字節(jié)時(shí),表示其已被沒(méi)收,然后在關(guān)閉后進(jìn)行判斷。

如果正確,則可以在應(yīng)用層中正確處理該幀。

問(wèn)題1:stm32怎么判斷串口接收完成 問(wèn)題2:使用串口調(diào)試發(fā)數(shù)據(jù),為什么單片機(jī)發(fā)回來(lái)的數(shù)據(jù)偶爾會(huì)出現(xiàn)亂碼

你要搞清楚ascii符號(hào)和數(shù)字的差別:ascii符號(hào)“0”~“9”的編碼是0x30~0x39,換成10進(jìn)制就是48~57。數(shù)字就是0~9。

如果要將“0”~“9”轉(zhuǎn)換為數(shù)字,減去0x30就可以了。

如果你用串口發(fā)送數(shù)字0~9,那就要勾選“十六進(jìn)制發(fā)送“,這樣就對(duì)了。

stm32串口如果沒(méi)有接受結(jié)束判斷會(huì)怎樣,會(huì)有什么情況

不會(huì)的。pc端只管發(fā)數(shù)據(jù),而不會(huì)去理會(huì)接收端是否全部接收。

所以對(duì)接收端的要求就是串口參數(shù)配置要一樣,處理速度跟得上。

stm32端的串口接收一般怎么做?最常見(jiàn)的就是使用串口接收中斷,在接收中斷里將數(shù)據(jù)依次寫入數(shù)組,然后在主函數(shù)中處理接收到的數(shù)據(jù)。如果想判斷數(shù)據(jù)接受完成,可以再開(kāi)一個(gè)定時(shí)器中斷,比如volatile int timeOut;在串口接收中斷中將這個(gè)timeOut設(shè)為0,在定時(shí)器中斷中執(zhí)行++操作。當(dāng)timeOut大于一個(gè)值,比如說(shuō)5ms,則說(shuō)明在5ms時(shí)間內(nèi)串口中斷沒(méi)有收到數(shù)據(jù),認(rèn)為數(shù)據(jù)接收完成。還一種方法是使用串口空閑中斷+DMA實(shí)現(xiàn)。

這個(gè)可以在上面那個(gè)方法不能適用的情況下使用,百度一下吧,要說(shuō)的太多,不詳述了。**一點(diǎn),需要注意的是寫入接收數(shù)組時(shí),注意溢出的情況。