freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

無線新型電子車牌安全加密和鑒權(quán)系統(tǒng)概述-資料下載頁

2025-07-27 17:28本頁面
  

【正文】 00ms,啟動模塊。拉高Reset引腳大于100ms,復(fù)位模塊。等待模塊啟動和初始化,直到接收到+CFUN: 1和+CPIN: READY則表示模塊啟動完成,SIM卡準備就緒,已經(jīng)接入網(wǎng)咯。發(fā)送AT命令確認模塊工作正常。在庫函數(shù)中,提供了兩個函數(shù)用來啟動模塊和檢測模塊網(wǎng)絡(luò)連接,分別如下://初始化模塊uint8 SQC_ME3000_Init()。//查詢是否入網(wǎng)uint8 SQC_ME3000_Creg()。其中第一個函數(shù)調(diào)用后就會啟動,結(jié)束后返回值,若為1則表示啟動成功,若為0則表示啟動失敗。第二個函數(shù)檢測是否入網(wǎng),原理是發(fā)送發(fā)送AT+CGREG?命令,會檢測模塊反饋結(jié)果,若為+CREG: 0, 1則表示入網(wǎng)成功。函數(shù)返回值同樣是返回1表示成功,返回0表示失敗。 ME3000連接服務(wù)器連接服務(wù)器的步驟比較多,在函數(shù)庫中提供了如下函數(shù)://打開gprs網(wǎng)絡(luò)uint8 SQC_ME3000_Open()。//關(guān)閉gprs網(wǎng)絡(luò)uint8 SQC_ME3000_Close()。//查詢gprs連接狀態(tài)uint8 SQC_ME3000_Pppstat()。//使用tcp連接服務(wù)器uint8 SQC_ME3000_Connect(struct _in_addr addr)。//查詢tcp連接狀態(tài)uint8 SQC_ME3000_Tcpstat()。//關(guān)閉tcp連接uint8 SQC_ME3000_Disconnect()。:開始打開gprs網(wǎng)絡(luò)SQC_ME3000_Open()構(gòu)造_in_add結(jié)構(gòu)體,填入連接的服務(wù)器IP和port成功檢驗gprs連接狀態(tài)SQC_ME3000_Pppstat()建立TCP連接SQC_ME3000_Connect(struct _in_addr addr) ME3000連接服務(wù)器流程圖在建立TCP/IP連接時需要定義結(jié)構(gòu)體_in_addr類型的變量,該結(jié)構(gòu)體定義如下:struct _in_addr{ uint8 s_addr[4]。 //保存一個IP地址 uint16 s_port。 //保存一個端口號 }。填入其中的IP地址和端口傳入相應(yīng)函數(shù)即可建立連接。其余的一下函數(shù)主要提供了連接的關(guān)閉和狀態(tài)的檢測功能,在對于鏈接的管理和監(jiān)測中需要用到,用的時候直接調(diào)用即可,返回值會包含結(jié)果。 ME3000發(fā)送和接收數(shù)據(jù) ME3000的接收和發(fā)送數(shù)據(jù)流程并不相同,發(fā)送數(shù)據(jù)只要是已經(jīng)建立了連接服務(wù)器的TCP/IP連接,就可以隨時調(diào)用函數(shù)進行發(fā)送,但是接收卻要監(jiān)測接收緩沖區(qū)并主動從中提取數(shù)據(jù)。下面對兩個部分分別介紹。 發(fā)送函數(shù)如下: //向服務(wù)器發(fā)送數(shù)據(jù) uint8 SQC_ME3000_Send(uint8 * msg,uint16 len)。 使用方法就是調(diào)用函數(shù),傳入兩個參數(shù),第一個參數(shù)為待發(fā)送數(shù)據(jù)的指針,第二個參數(shù)為待發(fā)送數(shù)據(jù)的長度,返回值1表示發(fā)送成功,0表示發(fā)送失敗。 接收數(shù)據(jù)的則需要用到模塊的狀態(tài)控制塊。狀態(tài)控制塊_ME3000_PIB定義如下:struct _ME3000_PIB{ uint8 Rxbuf[1024]。 //接受數(shù)據(jù)緩沖區(qū) uint16 Rxlen。 //接收數(shù)據(jù)長度 uint8 Rxflag。 //接收數(shù)據(jù)標志位(0無數(shù)據(jù),1正在接收,2接收完成,3等待發(fā)送數(shù)據(jù)) uint8 *Rxmsg[10]。 //接收的tcp數(shù)據(jù)包指針,最大儲存十個數(shù)據(jù)包,長度可以用strlen得到 uint8 msgnum。 //接收到的tcp數(shù)據(jù)包數(shù)量初始0,最大10}。 在結(jié)構(gòu)體中定義了TCP/IP數(shù)據(jù)包緩沖區(qū)的數(shù)據(jù)指針,最大的緩沖數(shù)量為10個,數(shù)量可以通過變量msgnum獲取。這里數(shù)據(jù)的提取是通過中斷函數(shù)來完成的。中斷函數(shù)如下:/* uart5 GPRS中斷服務(wù)函數(shù) */void uart5_isr(void){ int8 recv。 struct _ME3000_PIB * pib。 pib = SQC_ME3000_GetPib()。 recv = LPLD_UART_GetChar(UART5)。 if(recv == 39。+39。) { pibRxflag = 1。 pibRxlen = 0。 pibRxbuf[pibRxlen] = recv。 pibRxlen ++。 return。 } if(recv == 39。39。 amp。amp。 pibRxflag == 0) { pibRxflag = 3。 pibRxlen = 0。 return。 } if(pibRxflag == 1) { pibRxbuf[pibRxlen] = recv。 pibRxlen ++。 if( pibRxbuf[pibRxlen1] == 0x0A amp。amp。 pibRxbuf[pibRxlen2] == 0x0D) //amp。amp。 pibRxbuf[pibRxlen3] == 0x4B //amp。amp。 pibRxbuf[pibRxlen4] == 0x4F) { pibRxbuf[pibRxlen] = 0。 if(strchr(pibRxbuf,39。:39。) == 0) { pibRxflag =0。 pibRxlen = 0。 return。 } else { if(!SQC_ME3000_Recive(pibRxbuf,pibRxlen)) { pibRxflag =2。 return。 } else { pibRxflag =0。 pibRxlen = 0。 return。 } } } return。 }} 中斷函數(shù)在接收數(shù)據(jù)后開始分析數(shù)據(jù),ME3000模塊和主控芯片的所有通信都是通過AT指令完成,因此當ME3000模塊從3G網(wǎng)絡(luò)收到了來自服務(wù)器的數(shù)據(jù)包,也會向主控芯片發(fā)送AT指令,AT指令都是以0x0A和0x0D結(jié)尾,只要檢測到這兩個就應(yīng)當結(jié)束接收開始 分析接收到的指令。這里接收到之后調(diào)用函數(shù) //解析從服務(wù)器接收到的數(shù)據(jù) uint8 SQC_ME3000_Recive(uint8* cmd,uint16 len)。 函數(shù)傳遞兩個參數(shù),第一參數(shù)表示接收到的AT指令的指針,第二個表示指令長度。:開始獲取數(shù)據(jù)長度len數(shù)據(jù)頭是否是+ZIPRECVY從堆棧中分配空間并提取數(shù)據(jù)放入空間N用空間指針給pib結(jié)構(gòu)體的指針變量賦值并把接收數(shù)據(jù)數(shù)量+1結(jié)束緩沖區(qū)是否已滿YN 接收數(shù)據(jù)包流程圖 在應(yīng)用程序中,需要調(diào)用函數(shù) //獲取pib指針 struct _ME3000_PIB* SQC_ME3000_GetPib()。 該函數(shù)獲取pib指針,使得應(yīng)用程序可以讀取pib結(jié)構(gòu)體中的緩沖區(qū)信息數(shù)量,如果數(shù)量不為0則表示有待處理的數(shù)據(jù),此時可以從結(jié)構(gòu)體中獲取數(shù)據(jù)指針,用標準庫函數(shù)strlen()獲取數(shù)據(jù)長度即可進行處理。 需要注意的是,出于節(jié)約RAM資源,提高緩沖區(qū)利用率的目的,數(shù)據(jù)緩沖的指針所指向的地址是使用malloc分配的堆??臻g,因此為了避免內(nèi)存泄露,在使用完數(shù)據(jù)之后還需要調(diào)用 free函數(shù)來釋放空間。 JSON格式的通訊協(xié)議 我們在建立網(wǎng)絡(luò)連接時使用的是TCP/IP協(xié)議,然而在通信協(xié)議上我們使用json的自定義協(xié)議。 JSON(JavaScript Object Notation) 是一種輕量級的數(shù)據(jù)交換格式。它基于JavaScript(Standard ECMA262 3rd Edition December 1999)的一個子集。 JSON采用完全獨立于語言的文本格式,但是也使用了類似于C語言家族的習(xí)慣(包括C, C++, C, Java, JavaScript, Perl, Python等)。這些特性使JSON成為理想的數(shù)據(jù)交換語言。 易于人閱讀和編寫,同時也易于機器解析和生成(網(wǎng)絡(luò)傳輸速度)。 JSON的操作也有數(shù)十個操作函數(shù),我們在k60上參照開源的JSON操作庫cjson實現(xiàn)了完整的json操作功能。在此基礎(chǔ)上制定了通訊協(xié)議。 下面舉一個例子,這是登陸協(xié)議: 當設(shè)備需要登錄時,使用用戶名和密碼的方式登陸,則構(gòu)造一個如下的jsonobject{ mand : login, param : { name : wangweipeng, pwd : 12345678 }} 服務(wù)器接收到數(shù)據(jù)后,就可以從中讀取出這個數(shù)據(jù)請求,其中命令是“l(fā)ogin”也就是登陸請求,參數(shù)中有兩個參數(shù),一個是登錄名“wangweipeng”,一個是密碼“12345678”,在驗證參數(shù)的合法性之后如果登陸成功,返回如下JSON:{ result : true, param : { truename : wangweipeng }} 這里返回的結(jié)果是“true”表示登陸成功,還附帶的參數(shù)“truename”用來該登陸賬號持有者的真實姓名。如果參數(shù)合法性驗證失敗,比如密碼錯誤,則返回如下JSON:{ result : false, param : { reason : 密碼錯誤 }} 這里的結(jié)果是“falsh”表示登陸請求失敗,參數(shù)中的“reason”給出了失敗的原因是“密碼錯誤”。我們在服務(wù)器上使用網(wǎng)絡(luò)測試工具建立了一個測試服務(wù)器,然后把ip地址和端口寫入到程序中,讓電子車牌連接服務(wù)器,并測試與服務(wù)器的收發(fā)信息操作。操作流程遵循圖54,從log中可見,已經(jīng)順利建立了一個基于TCP協(xié)議的服務(wù)器,并且有一個客戶端已經(jīng)連接。已建立連接TCP服務(wù)器,地址【】,端口【8001】【:37872】連入...現(xiàn)在我們在嵌入式端構(gòu)造了一個數(shù)據(jù)包,可以看到,服務(wù)器端立刻收到了數(shù)據(jù)包并顯示了出來。我們同樣返回一段數(shù)據(jù):接受自【:37872】:hello server!發(fā)送至【:37872】:hello device!從log中可以看到,嵌入式部分也收到了數(shù)據(jù)。證明服務(wù)器通訊成功。通訊模塊的設(shè)計符合要求。ME3000初始化...ME3000初始化成功!ME3000打開GPRS...ME3000打開GPRS成功!ME3000正在連接...地址【】,端口【8001】...ME3000 TCP連接成功!ME3000 發(fā)送:hello server!ME3000 接受自...地址【】,端口【8001】:msg:hello device!,len:13 片上flash儲存 本設(shè)計使用的k60芯片型號為MK60DN512ZVLQ10,擁有512k的片上flash資源。這512k的flash又分為各256k的兩塊。芯片flash設(shè)計為兩塊flash分開讀寫,即一塊擦寫時另一塊仍然可以讀取,互不干擾。 因此我們利用上半片256k的flash作為code的存放區(qū),下半片256k作為data的存放區(qū),利用如下四個函數(shù)進行flash操作: //Flash擦寫模塊初始化 void LPLD_Flash_Init(void)。 //Flash扇區(qū)擦除 uint8 LPLD_Flash_SectorErase(uint32 seq)。 //Flash數(shù)據(jù)寫入 uint8 LPLD_Flash_ByteProgram(uint32 seq, uint32* offset, uint32 len)。 //Flash數(shù)據(jù)讀取 uint8 LPLD_Flash_Read(uint32 *add,uint32 len)。 使用時需要先調(diào)用用初始化函數(shù)對模塊進行初始化,初始化之后就可以調(diào)用函數(shù)進行操作。眾所周知,flash擦除是以扇區(qū)為單位整塊擦除的,和機械硬盤以字節(jié)為單位操作的方式不用。這里512k以2k為一個扇區(qū)分為256個扇區(qū),因此擦除時給出指針,函數(shù)會擦除整個2k扇區(qū)。而在寫入時是沒有這個整個限制,但是寫入前必須對要寫入的扇區(qū)進行擦除。擦除過后才能進行寫入。 讀取最簡單,不需要擦除也沒有限制,只要給出地址和數(shù)據(jù)長度就可以把數(shù)據(jù)從Flash中讀取出來 flash儲存測試 flash模塊的測試流程如下,先擬一段字符串,然后將字符串寫入flash,然后再從flash中讀取。Flash 初始化...Flash 初始化成功!Flash 擦除塊:3Flash 寫入數(shù)據(jù):msg:start a test!,len:13,add:3,offset:0Flash 數(shù)據(jù)寫入成功!Flash 讀取數(shù)據(jù):add:3,offset:0,len:13Flash 讀取數(shù)據(jù)成功!msg:start a test! 通訊測試 可以看到,flash模塊的擦除、寫入、讀取都成功,功能達到了設(shè)計目標。 基于硬件的芯片讀取保護 儲存在Flash上面的程序和數(shù)據(jù)雖然是經(jīng)過加密的,但是如
點擊復(fù)制文檔內(nèi)容
規(guī)章制度相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1