很有意思。
創(chuàng)新互聯(lián)建站10多年企業(yè)網(wǎng)站制作服務(wù);為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁設(shè)計及高端網(wǎng)站定制服務(wù),企業(yè)網(wǎng)站制作及推廣,對成都酒樓設(shè)計等多個方面擁有多年的網(wǎng)站營銷經(jīng)驗的網(wǎng)站建設(shè)公司。
原文數(shù)據(jù)全為:“00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ”
加密后變成了:“09 51 55 F4 FB 10 6F A4 D3 E8 87 46 F8 2F 49 CD ; ”
得出這樣的結(jié)果是有很多方法都可以實現(xiàn)的:
比如每個原數(shù)上加上個常數(shù)就可以了。
00+09=09;得出第一組加密后的數(shù)值
00+51=51;得出第二組加密后的數(shù)值
...
00+CD=CD;得出第16組加密后的數(shù)值.
加密的方法還有很多,不過這種最簡單。
還有就是你給的原文太單一了,不能夠更好的分析數(shù)據(jù)的規(guī)律。
如果你能把原文改為如下這段代碼再去加密一下,再把加密結(jié)果貼上來看一下就好多了。
00000140h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ;
00000150h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ;
00000160h: 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 ; 00000170h: 00 10 20 30 40 50 60 70 80 90 A0 B0 C0 D0 E0 F0 ;
00000180h: 11 11 11 11 11 22 22 22 22 22 22 EE EE EE FF FF ;
以上是單片機(jī)高手團(tuán)為您解答。
如果還沒解決你的問題,可以加我百度HI賬號。
單片機(jī)發(fā)送字串最好用一個特殊符號開始比如!,結(jié)束時用一個特殊符號結(jié)束比如$,數(shù)據(jù)在兩個標(biāo)記之中!n1n2n3n4..........$。
接收端不用中斷,而是在你的主程序循環(huán)體中去查詢mscomm1.input值,讀出來的值累加到一個變量中,那個變量中帶標(biāo)記的字串就是單片機(jī)發(fā)來的所有值。在主程序循環(huán)體中加入一個DoEvent
試試吧,應(yīng)該可以的。另外,mscomm1的buffer值可設(shè)大一些。
Option Explicit
Dim sj As String
Private Sub Form_Load()
MSComm1.Settings = "9600,n,8,1"
MSComm1.InputMode = comInputModeText
MSComm1.RThreshold = 1 '當(dāng)接收緩沖區(qū)到達(dá)1-8字節(jié)產(chǎn)生1次OnComm事件
MSComm1.CommPort = 1
MSComm1.PortOpen = True
End Sub
Private Sub MSComm1_OnComm()
Select Case MSComm1.CommEvent
Case 2
sj = sj MSComm1.Input
If Left(sj, 1) = "A" And Right(sj, 1) = "Z" Then
Text1 = Mid(sj, 2, Len(sj) - 2)
sj = ""
Else
MSComm1.PortOpen = False
sj = ""
MSComm1.PortOpen = True
End If
End Select
End Sub
回復(fù)LZ:"還有,真的別讓我再用MSComm1_OnComm() 來觸發(fā)啦,連續(xù)快速接收的時候真的會程序假死的!"
這種情況是存在的,就是有線連接串口通信也存在通信假四現(xiàn)象.但也不是不可解決的.
請參閱:
請參考
上面的代碼看不出問題,如果初始化串口控件時已經(jīng)注冊了AxMSComm1_OnComm,有數(shù)據(jù)接收應(yīng)該能觸發(fā),至于為什么沒有觸發(fā),要看看你的接收方是否已經(jīng)收到你的發(fā)出指令,是否已經(jīng)有響應(yīng)數(shù)據(jù)回發(fā)。
建議分開調(diào)試,用一個通用的串口助手,如格西烽火串口助手之類的,分別調(diào)試你的上位機(jī)和下位機(jī)。格西烽火串口助手能輕松的定制如你上面的發(fā)送數(shù)據(jù)。
1.0 通訊組件概述
通訊組件用于PC與可編程控制器(PLC)、智能儀表等進(jìn)行數(shù)據(jù)通訊,適用于基于PC高級語言的工業(yè)自動化控制系統(tǒng)。組件采用動態(tài)鏈接庫文件(*.DLL)的形式,在PC系統(tǒng)的項目工程里引用該組件,調(diào)用相應(yīng)的屬性與方法函數(shù),即可快速實現(xiàn)PC與PLC的高效數(shù)據(jù)交換。
DLL通訊組件無須安裝,直接復(fù)制到工程文件目錄,方便打包安裝部署;無須任何配置,直接調(diào)用函數(shù),與應(yīng)用開發(fā)無縫銜接;多年工程經(jīng)驗的軟件團(tuán)隊開發(fā)測試,經(jīng)過本公司及客戶的海量實際工程應(yīng)用檢驗,穩(wěn)定可靠;采用穩(wěn)定高效的內(nèi)部協(xié)議,無須編寫PLC內(nèi)部程序配合,直接訪問PLC的內(nèi)存,通訊響應(yīng)快速;內(nèi)建動態(tài)管理的多獨立線程連接,同時支持外部應(yīng)用的多線程結(jié)構(gòu)調(diào)用;兼容WINDOWS系統(tǒng)下的所有開發(fā)環(huán)境,包括各種版本的VB.NET、C#、VC++,以及DEIPHI 、VB、LabView等;支持幾乎所有PLC的CPU自帶通訊口、通訊擴(kuò)展模塊。
你可以在技成看視頻教程,這個案例比較經(jīng)典,看視頻更容易理解。