移動(dòng)式土壤墑情測(cè)試儀的運(yùn)行狀況良好,工作穩(wěn)定,并在國(guó)家“863”項(xiàng)目“水稻農(nóng)業(yè)構(gòu)建與應(yīng)用示范“中進(jìn)行初步應(yīng)用。儀器系統(tǒng)中的基站上傳數(shù)據(jù)到計(jì)算機(jī)通常有3種方法可以選擇:1.通過RS-232串口;2.通過USB;3.通過網(wǎng)線。由于與RS-232串口通信相比,其他2種方法比較容易實(shí)現(xiàn),而且,也有助于向基于短信網(wǎng)關(guān)的通信模式升級(jí),從而可以實(shí)現(xiàn)更遠(yuǎn)距離的傳輸。因此,系統(tǒng)采用串口的方式與計(jì)算機(jī)進(jìn)行連接?;臼褂肬ART0連接的COMO口,通過串口線與計(jì)算機(jī)相連。
算法4數(shù)據(jù)上傳算法:
1)初始化UART0;
2)等待計(jì)算機(jī)端的發(fā)送命令,有,則進(jìn)入(3);
3)讀取EEPROM中數(shù)據(jù);
4)發(fā)送數(shù)據(jù)到串口;
5)判斷是否已全部發(fā)送,否,則轉(zhuǎn)入(3),是,則進(jìn)入
(6);
6)發(fā)送結(jié)束碼給計(jì)算機(jī)端。
基站是采用中斷的方式來(lái)響應(yīng)計(jì)算機(jī)發(fā)來(lái)的命令,由于使用的是UART0口,所以,跟無(wú)線通信模塊的收發(fā)過程類似?;緕ui后發(fā)送的結(jié)束碼是為了計(jì)算機(jī)異步讀取串口數(shù)據(jù)時(shí),提借時(shí)間與空間的空隙,以免zui后幾位的數(shù)據(jù)丟失。
計(jì)算機(jī)端采用JAVA語(yǔ)言編寫的程序,對(duì)基站進(jìn)行控制,這里,使用了SUN*提供的Java CommunicationAPI對(duì)串口進(jìn)行編程。當(dāng)計(jì)算機(jī)端程序點(diǎn)擊提取按鈕,計(jì)算機(jī)就會(huì)向基站發(fā)送一個(gè)提取命令。計(jì)算機(jī)把基站傳來(lái)的數(shù)據(jù)保存到數(shù)據(jù)庫(kù)服務(wù)器中。程序中主要設(shè)計(jì)了下面幾個(gè)函數(shù):
1)串口初始化函數(shù):本函數(shù)初始化所的串口并返回初始化結(jié)果。如果初始化成功返回1,否則,返回-1。初始化的結(jié)果是該串口被SerialBean獨(dú)占性使用,其參數(shù)被設(shè)置為57600,N,8,1。如果串口被成功初始化,則讀取從串口傳入的數(shù)據(jù),并將其保存在緩沖區(qū)中。
2)串口讀取函數(shù):本函數(shù)從串口(緩沖區(qū)) 中讀取長(zhǎng)度的字符串。參數(shù)Length所返回字符串的長(zhǎng)度。
3)串口發(fā)送函數(shù):本函數(shù)向串口發(fā)送一個(gè)字符串。參數(shù)Msg是需要發(fā)送的字符串。
4)串口關(guān)閉函數(shù):本函數(shù)停止串口檢測(cè)進(jìn)程并關(guān)閉串口。