国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      豬個(gè)體標(biāo)識的一種控制方法

      文檔序號:6532796閱讀:315來源:國知局
      專利名稱:豬個(gè)體標(biāo)識的一種控制方法
      技術(shù)領(lǐng)域
      本項(xiàng)發(fā)明涉及豬肉可追溯系統(tǒng)中的豬個(gè)體標(biāo)識控制方法,屬于現(xiàn)代豬肉生產(chǎn)數(shù)字化管理控制領(lǐng)域。
      背景技術(shù)
      隨著一系列食品安全事件的發(fā)生以及人畜共患傳染病的爆發(fā)帶給人們的恐慌,世界各國對食品安全越來越關(guān)注,瘋牛病、口蹄疫和禽流感等疫病的爆發(fā)給相關(guān)國家的畜牧養(yǎng)殖業(yè)造成巨大的、甚至是毀滅性的打擊,畜禽產(chǎn)品出口受阻,市場銷售下降。在畜禽養(yǎng)殖行業(yè),一些不法畜禽生產(chǎn)者使用違禁添加劑時(shí)有發(fā)生,藥物殘留往往嚴(yán)重超標(biāo),其產(chǎn)品進(jìn)入消費(fèi)市場,嚴(yán)重影響消費(fèi)者的身體健康。因此,畜禽生產(chǎn)迫切需要一個(gè)安全體系框架,使其生產(chǎn)過程在合理地制度和監(jiān)督下進(jìn)行,消費(fèi)者需要“安全透明”,使畜產(chǎn)品生產(chǎn)和流通過程變得可監(jiān)督和稽查,使消費(fèi)者買得放心、吃得放心。針對消費(fèi)者對食品安全的信心喪失,世界各國紛紛制定相關(guān)法律和制度,約束和限制違規(guī)生產(chǎn)的發(fā)生,并試圖從源頭上控制和杜絕疫病的引入和傳播,盡快查清病畜的遷移歷史及可能進(jìn)入食物鏈的畜產(chǎn)品,通過可稽查的食品安全追溯系統(tǒng)來確保食物的安全生產(chǎn)。
      畜產(chǎn)品可追溯系統(tǒng)的建立包括畜體標(biāo)識、中央數(shù)據(jù)庫和信息傳遞系統(tǒng)及家畜流動登記三個(gè)基本要素。所以建立豬肉生產(chǎn)的標(biāo)識方法是實(shí)施可追溯系統(tǒng)的前提與關(guān)鍵。豬個(gè)體標(biāo)識需具備成本低、易使用、融入當(dāng)前的管理程序、較高的保留率、易在市場與屠宰場識別、易在屠宰場收集、不得有碎片進(jìn)入肉品或血液中,以及易將標(biāo)識信息錄入數(shù)據(jù)庫中。
      國外的家畜標(biāo)識自動化程度較高,如電子耳標(biāo)、電子瘤胃丸、DNA識別、虹膜識別等,但普遍存在成本太高的問題,很難在我國進(jìn)行推廣應(yīng)用。國內(nèi)的家畜標(biāo)識還沒有實(shí)現(xiàn)自動化技術(shù),無法滿足豬肉生產(chǎn)安全管理的自動化水平。

      發(fā)明內(nèi)容
      技術(shù)問題本發(fā)明針對現(xiàn)有豬個(gè)體識別的自動化程度低,與信息管理無法集成控制的現(xiàn)狀,提供一種豬肉生產(chǎn)分階段自動識別控制方法,開發(fā)一個(gè)集個(gè)體識別設(shè)備、個(gè)體標(biāo)識信息保存和轉(zhuǎn)換的自動記錄系統(tǒng)、管理控制于一身的綜合方法,不僅可以提高個(gè)體標(biāo)識的自動化水平、而且可以和豬肉生產(chǎn)可追溯系統(tǒng)進(jìn)行無縫結(jié)合,提高豬肉產(chǎn)品生產(chǎn)的安全水平。
      技術(shù)方案豬肉可追溯系統(tǒng)中的豬個(gè)體標(biāo)識的一種控制方法,包括個(gè)體標(biāo)識設(shè)備和軟件的個(gè)體標(biāo)識控制模塊。個(gè)體標(biāo)識模塊采用了N層結(jié)構(gòu)即數(shù)據(jù)庫、數(shù)據(jù)訪問層、業(yè)務(wù)層以及客戶界面;采用組件技術(shù)開發(fā)方法,即數(shù)據(jù)訪問層和業(yè)務(wù)層全部由組件構(gòu)成,豬個(gè)體識別方法的技術(shù)特征在于
      ——在生豬養(yǎng)殖階段采用二維條碼耳標(biāo),軟件系統(tǒng)的養(yǎng)殖階段耳標(biāo)號控制程序?qū)⒇i耳標(biāo)號傳遞給系統(tǒng)軟件的個(gè)體標(biāo)識組件,完成養(yǎng)殖階段耳標(biāo)號保存;
      ——生豬出售時(shí),將養(yǎng)殖階段二維條碼耳標(biāo)的信息轉(zhuǎn)換為XML文件,通過Web Service上傳到Web服務(wù)器;
      ——在生豬屠宰階段,當(dāng)生豬去頭時(shí),用條碼閱讀器讀取條形碼的信息;
      ——條形碼的信息由閱讀器讀入后,通過計(jì)算機(jī)的鍵盤口,將讀取的條形碼信息轉(zhuǎn)換為豬耳標(biāo)號數(shù)據(jù),傳入計(jì)算機(jī);
      ——然后軟件系統(tǒng)的耳標(biāo)號控制程序?qū)⒇i耳標(biāo)號傳遞給系統(tǒng)軟件的個(gè)體標(biāo)識組件,由個(gè)體標(biāo)識組件實(shí)現(xiàn)耳標(biāo)號在數(shù)據(jù)庫中的存儲;
      ——豬劈半后,在每一片肉上掛上一個(gè)無線射頻卡;
      ——卡信息由閱讀器讀取,通過計(jì)算機(jī)的鍵盤口,將讀取的射頻卡信息轉(zhuǎn)換為豬的電子標(biāo)識號數(shù)據(jù),傳入計(jì)算機(jī);
      ——然后軟件系統(tǒng)的電子標(biāo)識號控制程序?qū)⒇i的電子標(biāo)識號傳遞給系統(tǒng)軟件的個(gè)體標(biāo)識組件,由個(gè)體標(biāo)識組件實(shí)現(xiàn)電子標(biāo)識號在數(shù)據(jù)庫中的存儲;
      ——當(dāng)一批豬屠宰完成后,軟件系統(tǒng)的耳標(biāo)號與電子標(biāo)識號控制程序通過個(gè)體標(biāo)識組件從數(shù)據(jù)庫中分別讀取豬耳標(biāo)號與電子標(biāo)識號,再由個(gè)體標(biāo)識組件完成耳標(biāo)號與電子標(biāo)識號的對應(yīng);
      ——當(dāng)肉進(jìn)入冷庫冷藏后,無線射頻卡閱讀器再次讀取每個(gè)射頻卡的信息,通過計(jì)算機(jī)的鍵盤口,將讀取的射頻卡信息轉(zhuǎn)換為豬的電子標(biāo)識號數(shù)據(jù),傳入計(jì)算機(jī);
      ——然后軟件系統(tǒng)中一維條碼打印控制程序?qū)⒇i的電子標(biāo)識號傳遞給系統(tǒng)軟件的個(gè)體標(biāo)識組件,個(gè)體標(biāo)識組件根據(jù)電子標(biāo)識號從數(shù)據(jù)庫中讀取相應(yīng)的豬耳標(biāo)號;
      ——將豬耳標(biāo)號轉(zhuǎn)換為一維條碼的信息,傳遞給條碼打印機(jī),打印一維條碼標(biāo)簽,貼在每一片豬肉上,完成豬肉生產(chǎn)各階段的個(gè)體標(biāo)識控制過程。
      通過以上相互關(guān)聯(lián)的硬件設(shè)備,加上系統(tǒng)軟件作為核心支持,最終實(shí)現(xiàn)了豬個(gè)體識別的自動化。
      有益效果
      本發(fā)明豬肉可追溯系統(tǒng)中的豬個(gè)體標(biāo)識管理系統(tǒng)已在南京天環(huán)養(yǎng)殖場、南京天環(huán)屠宰場等地開始使用。經(jīng)過四批二維條碼耳標(biāo)、電子標(biāo)識、一維條碼標(biāo)簽的自動讀取試驗(yàn),試驗(yàn)結(jié)果表明,可顯著提高豬個(gè)體標(biāo)識的自動化識別水平,耳標(biāo)自動讀取成功率達(dá)到85%以上,標(biāo)識控制效果準(zhǔn)確率100%。
      表1 二維條碼耳標(biāo)讀取試驗(yàn)結(jié)果
      豬肉安全可追溯管理系統(tǒng)是一個(gè)軟硬件集成的系統(tǒng)工程。它是利用動物耳標(biāo)、條形碼和電子標(biāo)識技術(shù),以.NET框架為基礎(chǔ),以組件技術(shù)為核心,以養(yǎng)豬場、屠宰場和超市為一體,以Internet為網(wǎng)絡(luò)架構(gòu),將各應(yīng)用點(diǎn)上的局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)互聯(lián)起來,最終為消費(fèi)者提供豬肉安全生產(chǎn)信息,提高消費(fèi)者對豬肉安全品質(zhì)的信心,構(gòu)建一個(gè)豬肉生產(chǎn)安全管理的現(xiàn)代化信息平臺。
      本發(fā)明通過耳標(biāo)號——電子標(biāo)識號的對應(yīng)關(guān)系,系統(tǒng)最終實(shí)現(xiàn)了豬所有檔案信息的個(gè)體對應(yīng)。在銷售階段,用戶只需掃描或輸入條碼標(biāo)簽上的耳標(biāo)號,就可以查閱豬從出生到銷售全過程的所有信息,真正實(shí)現(xiàn)了“從農(nóng)場到餐桌”的全程控制管理模式。


      圖1.二維條碼耳標(biāo)
      圖2.無線射頻卡
      圖3.基本網(wǎng)絡(luò)構(gòu)架
      圖4.耳標(biāo)與RFID的轉(zhuǎn)換模塊
      圖5.個(gè)體標(biāo)識數(shù)據(jù)庫模型
      圖6.耳標(biāo)號保存web窗體
      圖7.電子標(biāo)識號保存web窗體
      圖8.耳標(biāo)號與電子標(biāo)識號保存web窗體
      圖9.一維條碼打印Windows窗體
      具體實(shí)施例方式
      本發(fā)明為豬個(gè)體標(biāo)識的一種控制方法,包括
      1、設(shè)計(jì)軟件的基本構(gòu)架
      個(gè)體標(biāo)識功能模塊基于.NET框架,采用了N層結(jié)構(gòu)即數(shù)據(jù)庫、數(shù)據(jù)訪問層、業(yè)務(wù)層以及客戶界面;采用組件技術(shù)開發(fā)方法,即數(shù)據(jù)訪問層和業(yè)務(wù)層全部由組件構(gòu)成。
      2、設(shè)計(jì)軟件基本組件
      (1)數(shù)據(jù)訪問組件
      a、采用SQL語句和存儲過程兩種形式訪問數(shù)據(jù)庫。
      b、可以將查詢結(jié)果以DataSet或DataView結(jié)構(gòu)形式返回?cái)?shù)據(jù)集。
      c、可以執(zhí)行查詢,不返回任何執(zhí)行結(jié)果。
      d、可以執(zhí)行查詢,只返回第一行第一個(gè)列的值。
      (2)數(shù)據(jù)庫連接組件
      a、在實(shí)現(xiàn)對數(shù)據(jù)庫的訪問時(shí),提供數(shù)據(jù)庫服務(wù)器的基本參數(shù)。
      (3)個(gè)體標(biāo)識組件
      a、管理養(yǎng)殖階段二維條碼耳標(biāo),實(shí)現(xiàn)養(yǎng)殖階段二維條碼耳標(biāo)的查詢、添加、修改、刪除。
      b、管理屠宰階段二維條碼耳標(biāo),實(shí)現(xiàn)屠宰階段二維條碼耳標(biāo)的查詢、添加、修改、刪除。
      c、管理無線射頻卡,實(shí)現(xiàn)電子標(biāo)識信息的查詢、添加、修改、刪除。
      d、管理豬耳標(biāo)號與電子標(biāo)識號的對應(yīng),實(shí)現(xiàn)耳標(biāo)號與電子標(biāo)識對應(yīng)信息的查詢、添加、修改、刪除。
      e、實(shí)現(xiàn)一維條碼標(biāo)簽的數(shù)據(jù)獲取和打印。
      (4)網(wǎng)絡(luò)模塊
      a、數(shù)據(jù)上傳功能通過養(yǎng)殖階段的二維條碼耳標(biāo)信息以XML形式,通過Web Service,將資料上傳至Internet,進(jìn)行個(gè)體標(biāo)識信息的統(tǒng)一管理。
      b、個(gè)體標(biāo)識信息的發(fā)布可以將個(gè)體標(biāo)識信息發(fā)布到Internet,供消費(fèi)者查看。
      各個(gè)組件之間,既相互獨(dú)立,又通過各個(gè)組件間的接口相互聯(lián)系。通過組件接口間的信息傳遞,各個(gè)組件相互協(xié)調(diào)配合,最終實(shí)現(xiàn)了從豬飼養(yǎng)、屠宰、銷售的個(gè)體識別,也通過網(wǎng)絡(luò)模塊實(shí)現(xiàn)了數(shù)據(jù)資源共享。
      3、支持硬件的設(shè)計(jì)與安裝
      a、基本的硬件組成
      (1)條碼耳標(biāo)豬場的所有豬,從第一次免疫起就有二維條碼耳標(biāo)作為其身份的識別。
      (2)條碼掃描器(讀卡器)讀取豬的條碼耳標(biāo)上的條形碼,將條形碼傳給識別設(shè)備,由識別設(shè)備提交給系統(tǒng)軟件,實(shí)現(xiàn)豬耳標(biāo)號的管理。
      (3)無線射頻卡在屠宰劈半后,掛在每一片肉上,作為身份識別。
      (4)讀卡器讀取豬的射頻卡,將卡的信息傳給識別設(shè)備,由識別設(shè)備提交給系統(tǒng)軟件,實(shí)現(xiàn)豬電子標(biāo)識號的管理。
      (5)讀卡器讀取豬的射頻卡,將卡的信息傳給識別設(shè)備,由識別設(shè)備提交給系統(tǒng)軟件,軟件根據(jù)豬電子標(biāo)識號獲取豬耳標(biāo)號,傳遞給打印機(jī),打印一維條碼標(biāo)簽。
      b通過自動識別系統(tǒng)完成識別的基本步驟
      (1)耳標(biāo)采用農(nóng)業(yè)部統(tǒng)一使用的塑料耳標(biāo)。
      (2)條形碼采用市場上通用的Data Matrix,在耳標(biāo)上用激光進(jìn)行雕刻。
      (3)條碼掃描器采用和條形碼配套的掃描器。
      (4)無線射頻卡采用市場上通用的無線射頻卡。
      (5)識別器采用和無線射頻卡配套的識別器。
      (6)一維條碼打印機(jī)采用市場上通用的一維條碼打印機(jī)。
      完成任務(wù)的步驟包括
      ——在生豬養(yǎng)殖階段,每只豬佩戴兩只二維條碼耳標(biāo);
      ——通過軟件系統(tǒng)控制程序?qū)⒚恐回i的兩個(gè)二維條碼耳標(biāo)的對應(yīng)關(guān)系保存在數(shù)據(jù)庫中;
      ——生豬出售時(shí),將養(yǎng)殖階段二維條碼耳標(biāo)的信息上傳到Web服務(wù)器;
      ——在生豬屠宰階段,當(dāng)生豬去頭時(shí),用條碼閱讀器隨機(jī)讀取每只豬的兩個(gè)耳標(biāo)中的一個(gè)條形碼的信息;
      ——通過計(jì)算機(jī)的鍵盤口,將讀取的條形碼信息轉(zhuǎn)換為豬耳標(biāo)號數(shù)據(jù),傳入計(jì)算機(jī);
      ——然后軟件系統(tǒng)控制程序?qū)⒇i耳標(biāo)號在數(shù)據(jù)庫中的存儲;
      ——豬劈半后,在每一片肉上掛上一個(gè)無線射頻卡;
      ——卡信息由閱讀器讀取,通過計(jì)算機(jī)的鍵盤口,將讀取的射頻卡信息轉(zhuǎn)換為豬的電子標(biāo)識號數(shù)據(jù),傳入計(jì)算機(jī)。豬耳標(biāo)號與電子標(biāo)識號的轉(zhuǎn)換包括二維條碼耳標(biāo)號和電子標(biāo)識號的轉(zhuǎn)換,主要通過數(shù)據(jù)庫來實(shí)現(xiàn),結(jié)構(gòu)如圖5。
      豬在流水線上都是依次排列的,在去頭時(shí)依次讀取二維條碼耳標(biāo)號,存入數(shù)據(jù)表豬耳標(biāo)號中。對無法讀取的號碼,系統(tǒng)用“99999999999999”進(jìn)行識別。對非試驗(yàn)耳標(biāo)的耳標(biāo)號碼用“88888888888888”進(jìn)行識別。這樣屠宰線上所有豬的耳標(biāo)號在數(shù)據(jù)表中進(jìn)行順序排列。在胴體劈半后,依次在每頭豬的兩片肉上掛電子標(biāo)識,并將電子標(biāo)識號存入數(shù)據(jù)表電子標(biāo)識號中。最后將兩個(gè)數(shù)據(jù)表中當(dāng)天的記錄一對二的讀取,存入數(shù)據(jù)表耳標(biāo)號與電子標(biāo)識號中,這樣某天的每一個(gè)電子標(biāo)識號就可以對應(yīng)唯一的耳標(biāo)號。在胴體冷卻時(shí),取下電子標(biāo)識,讀取電子標(biāo)識號,在數(shù)據(jù)庫中獲取對應(yīng)的耳標(biāo)號,打印出一維條碼貼在胴體上,直到超市出售。通過這樣的耳標(biāo)號與電子標(biāo)識號的相互轉(zhuǎn)換(耳標(biāo)號與電子標(biāo)識號的轉(zhuǎn)換模塊如圖5),超市出售的每片肉都可以對應(yīng)原始的耳標(biāo)號,根據(jù)耳標(biāo)號可以獲取所有生豬屠宰檔案信息。在表豬耳標(biāo)號中,同時(shí)記錄屠宰方式,主要是為了在保存豬耳標(biāo)號的同時(shí)保存該豬的生豬屠宰記錄,減少工作量。
      ——軟件系統(tǒng)的控制程序?qū)⒇i的電子標(biāo)識號在數(shù)據(jù)庫中的存儲;
      ——當(dāng)一批豬屠宰完成后,軟件系統(tǒng)的控制程序通過個(gè)體標(biāo)識組件從數(shù)據(jù)庫中分別讀取豬耳標(biāo)號與電子標(biāo)識號,完成耳標(biāo)號與電子標(biāo)識號的對應(yīng);
      ——當(dāng)肉進(jìn)入冷庫冷藏后,無線射頻卡閱讀器再次讀取每個(gè)射頻卡的信息。通過計(jì)算機(jī)的鍵盤口,將讀取的射頻卡信息轉(zhuǎn)換為豬的電子標(biāo)識號數(shù)據(jù),傳入計(jì)算機(jī);
      ——然后軟件系統(tǒng)控制程序根據(jù)電子標(biāo)識號,從數(shù)據(jù)庫中讀取相應(yīng)的豬耳標(biāo)號;
      ——將豬耳標(biāo)號轉(zhuǎn)換為一維條碼的信息,傳遞給條碼打印機(jī),打印一維條碼標(biāo)簽。工作人員將條碼標(biāo)簽貼在每一片豬肉上,完成豬肉生產(chǎn)各階段的個(gè)體標(biāo)識過程。
      通過以上相互關(guān)聯(lián)的硬件設(shè)備,加上系統(tǒng)軟件作為核心支持,最終實(shí)現(xiàn)了豬個(gè)體識別的自動化。c系統(tǒng)軟件的安裝對系統(tǒng)軟硬件的要求是
      ●CPU在奔騰II以上
      ●內(nèi)存128MB以上
      ●2G以上硬盤
      ●操作系統(tǒng)Microsoft Windows Server 2003、Windows XP Professional、Windows XP HomeEdition、Windows 2000(推薦Service Pack 3或更高版本)、Windows Millennium Edition(WindowsMe)、Windows 98、Microsoft Windows NT 4.0(需要Service Pack 6a)。
      通過以上三個(gè)相互關(guān)聯(lián)的硬件設(shè)備,加上系統(tǒng)軟件作為核心支持,最終實(shí)現(xiàn)了,豬個(gè)體識別自動化。
      其中實(shí)現(xiàn)豬個(gè)體標(biāo)識的全程控制的″耳標(biāo)號控制″程序模塊、″電子標(biāo)識號控制″程序模塊、″耳標(biāo)號與電子標(biāo)識號聯(lián)合控制序模塊和″一維條碼打印控制″程序模塊如下
      #Region″耳標(biāo)號控制″(圖6)
      將耳標(biāo)號保存功能單獨(dú)列出,當(dāng)執(zhí)行BtOK.Click事件時(shí)調(diào)用SaveData方法
      Public Sub SaveData(ByVal textstr As String,ByVal usedate As DateTime,ByVal mode As String,ByVal slaughter As String,ByVal farmname As String)  If textstr=config.Earmark1 Then’沒有二維條碼耳標(biāo)的豬用config.Earmark1(即99999999999999)  表示  EarMark=″″  EarMark=textstr  Dim accountSystem As New SMEarmark(0,textstr,usedate,mode,slaughter,farmname)  accountSystem.Save()  ElseIf textstr=config.Earmark2 Then’有二維條碼耳標(biāo)的豬但無法讀取耳標(biāo)號時(shí)用config.Earmark2(即88888888888888)表示  EarMark=″″  EarMark=textstr  Dim accountSystem As New SMEarmark(0,textstr,usedate,mode,slaughter,farmname)  accountSystem.Save()  Else’自動讀取系統(tǒng)豬耳標(biāo)號  EarMark=textstr  Dim useid As Integer  If EarMark<>″″Then’如果輸入的耳標(biāo)數(shù)據(jù)不為空,則判斷該耳標(biāo)號是否已經(jīng)保存在數(shù)據(jù)庫中  useid=SMEarmark.GetID(EarMark)  End If  If useid<>0 Then’如果沒有數(shù)據(jù)庫中沒有,則插入該記錄,否則修改該記錄  Dim accountSystem As New SMEarmark(useid,textstr,usedate,mode,slaughter,   farmname)  accountSystem.Save()  Else  Dim accountSystem As New SMEarmark(0,textstr,usedate,mode,slaughter,farmname)  accountSystem.Save()  End If<!-- SIPO <DP n="5"> --><dp n="d5"/>  End If  End Sub
      ’*********************從數(shù)據(jù)庫讀取耳標(biāo)號數(shù)據(jù)************************
      Public Sub EarmarkFromDatabase(ByVal usedate As DateTime)   Dim earmark As SMEarmark  Dim config As IDataConn=New ConnStr  Dim number As Integer=0  Dim earstr As String  Dim ArrEarmark As New ArrayList  Dim dv As DataView  dv=SMEarmark.GetEarmarkByDate(usedate)  If dv.Table.Rows.Count>0 Then  TxtCount.Text=dv.Table.Rows.Count  Dim dr As DataRow  For Each dr In dv.Table.Rows  earstr=Trim(dr(1).ToString)  ArrEarmark.Add(earstr+″,″+Trim(dr(2).ToString))  If earstr=config.Earmark1 Then’非系統(tǒng)豬  number=number+1  End If  Next dr  TxtNoCount.Text=number  End If  ListEarmark.DataSource=ArrEarmark  ListEarmark.DataBind()  End Sub
      條碼閱讀器讀取的數(shù)據(jù)直接輸入到Txtearmark文本框中,因?yàn)闂l碼閱讀器讀取數(shù)據(jù)是以回車鍵結(jié)束,因此執(zhí)行Page_Load事件。
      Private Sub Page_Load(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles MyBase.Load  If Not IsPostBack Then’初始化頁的用戶代碼  DListName.DataSource=SMCorporation.GetCorporationName’綁定屠宰場名稱控件  DListName.DataBind()  DlistFarm.DataSource=SMCorporation.GetCorporationName’綁定屠宰場名稱控件  DlistFarm.DataBind()  Dim focus As GetFocus  focus.SetFocus(Txtearmark)’獲得焦點(diǎn)  txtdate.Text=Today  EarmarkFromDatabase(Convert.ToDateTime(txtdate.Text).ToString(″d″))  ListEarmark.DataBind()  Else  If Txtearmark.Text<>""Then’如果輸入的耳標(biāo)數(shù)據(jù)不為空,則該保存耳標(biāo)號到數(shù)據(jù)庫中  SaveData(Txtearmark.Text,Convert.ToDateTime(txtdate.Text).ToString(″d″),  DListMode.SelectedValue,TxtSlaughter.Text,TxtFarmname.Text)<!-- SIPO <DP n="6"> --><dp n="d6"/>   Txtearmark.Text=″″   End If   EarmarkFromDatabase(Convert.ToDateTime(txtdate.Text).ToString(″d″))   Dim focus As GetFocus   focus.SetFocus(Txtearmark)’獲得焦點(diǎn)   End If   End Sub
      點(diǎn)擊確定按鈕也可保存數(shù)據(jù),這時(shí)執(zhí)行BtOK.Click事件
      Private Sub BtOK_Click(ByVal sender As Object,ByVal e As System.EventArgs)Handles BtOK.Click   If Txtearmark.Text<>""Then   SaveData(Txtearmark.Text,Convert.ToDateTime(txtdate.Text).ToString(″d″),DListMode.SelectedValue,TxtSlaughter.Text,TxtFarmname.Text)   Txtearmark.Text=″″   End If   Txtearmark.Text=″″   EarmarkFromDatabase(Convert.ToDateTime(txtdate.Text).ToString(″d″))   Dim focus As GetFocus   focus.SetFocus(Txtearmark)’獲得焦點(diǎn)   End Sub#End Region#Region″電子標(biāo)識號控制″(圖7)Public Sub SaveData(ByVal textstr As String,ByVal number As String,ByVal usedate As DateTime)   Dim useid As Integer   useid=SMPipelining.GetID(textstr,usedate)   If useid<>0 Then  Dim accountSystem As New SMPipelining(useid,textstr,number,usedate)  accountSystem.Save()   Else  Dim accountSystem As New SMPipelining(0,textstr,number,usedate)  accountSystem.Save()   End IfEnd Sub#End Region#Region″從數(shù)據(jù)庫中讀取″Public Function ReaderDatabase(ByVal number As String,ByVal usedate As DateTime)As String   Dim earmark As SMEarmark   Dim ReadString As String   Dim dv As DataView=SMPipelining.GetdetailsDataViewBynumberdate(number,usedate)   If dv.Table.Rows.Count>0 Then   ReadString=″″   Dim dr As DataRow   For Each dr In dv.Table.Rows   ReadString=ReadString+ControlChars.Cr+Trim(dr(1).ToString)+″,″+<!-- SIPO <DP n="7"> --><dp n="d7"/>Trim(dr(2).ToString)+″,″+Trim(dr(3).ToString)  Next dr  End If  Return ReadString  End Function#End Region
      無線射頻標(biāo)簽閱讀器讀取的數(shù)據(jù)直接輸入到TxtRFIDOne文本框中,因?yàn)殚喿x器讀取數(shù)據(jù)是以回車鍵結(jié)束,因此執(zhí)行Page_Load事件。
      Private Sub Page_Load(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles MyBase.Load  If Not IsPostBack Then’初始化頁的用戶代碼   Dim focus As GetFocus   focus.SetFocus(TxtRFIDOne)’獲得焦點(diǎn)   Session(″number″)=1   txtdate.Text=Today   TxtRFIDLists.Text=ReaderDatabase(DListNumber.SelectedValue,txtdate.Text)   Else’重新加載該頁的用戶代碼   If TxtRFIDOne.Text<>″″Then   SaveData(TxtRFIDOne.Text,DListNumber.SelectedValue,Convert.ToDateTime(txtdate.Text).ToString(″d″))   TxtRFIDOne.Text=″″   End If   TxtRFIDLists.Text=ReaderDatabase(DListNumber.SelectedValue,txtdate.Text)   Dim focus As GetFocus   focus.SetFocus(TxtRFIDOne)’獲得焦點(diǎn)   End If  End Sub
      點(diǎn)擊確定按鈕也可保存數(shù)據(jù),這時(shí)執(zhí)行BtOK.Click事件
      Private Sub BtOK_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)  If TxtRFIDOne.Text<>″″Then  SaveData(TxtRFIDOne.Text,DListNumber.SelectedValue,Convert.ToDateTime(txtdate.Text).ToString(″d″))  TxtRFIDOne.Text=″″  End If  TxtRFIDLists.Text=ReaderDatabase(DListNumber.SelectedValue,txtdate.Text)  Dim focus As GetFocus  focus.SetFocus(TxtRFIDOne)’獲得焦點(diǎn)  End Sub
      #Region″耳標(biāo)號與電子標(biāo)識號聯(lián)合控制″(圖8)
      根據(jù)日期讀取數(shù)據(jù)庫中記錄的耳標(biāo)號
      Private Function ArrEarDatabase(ByVal usedate As DateTime)As ArrayList  Dim dv As DataView  Dim ArrEarID As New ArrayList  dv=SMEarmark.GetEarmarkByDate(usedate)  If dv.Table.Rows.Count>0 Then<!-- SIPO <DP n="8"> --><dp n="d8"/>  Dim dr As DataRow  For Each dr In dv.Table.Rows  ArrEarID.Add(dr(0).ToString)’earmarkID  Next dr  End If  Return ArrEarID  End Function<br/>
      根據(jù)日期和胴體上掛的電子標(biāo)簽個(gè)數(shù)讀取數(shù)據(jù)庫中記錄的電子標(biāo)識號
      Private Function ArrRFDatabase(ByVal number As String,ByVal usedate As DateTime)As ArrayList  Dim dv As DataView  Dim ArrEar As New ArrayList  dv=SMPipelining.GetdetailsDataViewBynumberdate(number,usedate)  If dv.Table.Rows.Count>0 Then  Dim dr As DataRow  For Each dr In dv.Table.Rows  ArrEar.Add(dr(0).ToString)’PipeliningID  Next dr  End If  Return ArrEar  End Function  #End Region#Region″查看耳標(biāo)事件″  Private Sub BtnEarOK_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)HandlesBtnEarOK.Click  TxtLists1.Text=EarReaderDatabase(Convert.ToDateTime(txtdate.Text).ToString(″d″))  End Sub#End Region#Region″查看電子標(biāo)識事件″  Private Sub BtnRFIDOK_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)HandlesBtnRFIDOK.Click  TxtLists2.Text=RFReaderDatabase(DListNumber.SelectedValue,Convert.ToDateTime(txtdate.Text).ToString(″d″))  End Sub#End Region#Region″查看耳標(biāo)與電子標(biāo)識關(guān)系的事件″  Private Sub BtnQuery_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)HandlesBtnQuery.Click  Dim ArrEarmarkID As New ArrayList  Dim ArrRFID As New ArrayList  Dim earstr1,RFStr,IDStr As String  IDStr=″″  ArrEarmarkID=ArrEarDatabase(Convert.ToDateTime(txtdate.Text).ToString(″d″))  ArrRFID=ArrRFDatabase(DListNumber.SelectedValue,Convert.ToDateTime(txtdate.Text).ToString(″d″))<!-- SIPO <DP n="9"> --><dp n="d9"/>  Dim i,j,k,earcount,Rfcount,number As Integer  earcount=ArrEarmarkID.Count  Rfcount=ArrRFID.Count  number=Convert.ToInt32(DListNumber.SelectedValue)  j=0  For i=0 To earcount-1  If j>Rfcount-1 Then  Exit For  End If  Dim earclass As New SMEarmark(Convert.ToInt32(ArrEarmarkID.Item(i)))  earclass.Load()  earstr1=earclass.earmark  IDStr=IDStr+Trim(earstr1)+″,″  For k=1 To number  Dim RFClass As New SMPipelining(ArrRFID.Item(j))  RFClass.Load()  RFStr=RFClass.Pipelining  IDStr=IDStr+Trim(RFStr)+″,″  j=j(luò)+1  Next  IDStr=IDStr+ControlChars.Cr  Next  TxtID.Text=IDStr  End Sub#End Region#Region″保存耳標(biāo)與電子標(biāo)識″  Private Sub BtOK_Click(ByVal sender As Object,ByVal e As System.EventArgs)Handles BtOK.Click  Dim ArrEarmarkID As New ArrayList  Dim ArrRFID As New ArrayList  Dim earstr1.RFStr As String  Dim useid As Integer  ArrEarmarkID=ArrEarDatabase(Convert.ToDateTime(txtdate.Text).ToString(″d″))  ArrRFID=ArrRFDatabase(DListNumber.SelectedValue,Convert.ToDateTime(txtdate.Text).ToString(″d″))  Dim i,j,k,earcount,Rfcount,number As Integer  earcount=ArrEarmarkID.Count  Rfcount=ArrRFID.Count  number=Convert.ToInt32(DListNumber.SelectedValue)  j=0  For i=0 To earcount-1  If j>Rfcount-1 Then  Exit For  End If  Dim earclass As New SMEarmark(Convert.ToInt32(ArrEarmarkID.Item(i)))  earclass.Load()<!-- SIPO <DP n="10"> --><dp n="d10"/>  earstr1=earclass.earmark  Dim config As IDataConn=New ConnStrIf earstr1=config.Earmark1 Then’非本系統(tǒng)豬耳標(biāo)號  j=j(luò)+number  Exit For  ElseIf earstr1=config.Earmark2 Then’本系統(tǒng)豬,但無法讀取耳標(biāo)號  earstr1=TxtBatch.Text  End If  ’*************保存屠宰記錄*********************  useid=SMPigButcher.GetID(earstr1)  If useid<>0 Then  Dim accountSystem As New SMPigButcher(useid,earstr1,earclass.notedate,earclass.mode,earclass.slaughter,earclass.farmname)  accountSystem.Save()  Else  Dim accountSystem As New SMPigButcher(0,earstr1,earclass.notedate,earclass.mode,earclass.slaughter,earclass.farmname)  accountSystem.Save()  End If  ’***************耳標(biāo)與電子標(biāo)識號*********************  For k=1 To number  Dim RFClass As New SMPipelining(ArrRFID.Item(j))  RFClass.Load()  RFStr=RFClass.Pipelining  useid=SMEarPipelining.GetID(earstr1,RFStr,RFClass.Number)  If useid<>0 Then  Dim accountSystem As New SMEarPipelining(useid,earstr1,RFStr,RFClass.Number,Convert.ToDateTime(txtdate.Text).ToString(″d″),″″)  accountSystem.Save()  Else  Dim accountSystem As New SMEarPipel ining(0,earstr1,RFStr,RFClass.Number,Convert.ToDateTime(txtdate.Text).ToString(″d″),″″)  accountSystem.Save()  End If  j=j(luò)+1  Next  Next  End Sub#End Region
      一維條碼打印控制(采用VB 6.0中文版編寫)(圖9)
      ″″″打印機(jī)控制函數(shù)WinPPLA.DLL Version 2.7AW″″″″″
      Private Declare Function A_CreatePrn Lib″WINPPLA.DLL″(ByVal selection As Long,ByVal filename As
      String)As Long
      Private Declare Function A_Set_Darkness Lib″WINPPLA.DLL″(ByVal darkness As Long)As Long
      Private Declare Function A_Prn_Barcode Lib″WINPPLA.DLL″(ByVal x As Long,ByVal y As Long,ByVal
      ori As Long,ByVal typee As Byte,ByVal narrow As Long,ByVal width As Long,ByVal height
      As Long,ByVal mode As Byte,ByVal numeric As Long,ByVal data As String)As Long
      Private Declare Function A_Prn_Text Lib″WINPPLA.DLL″(ByVal x As Long,ByVal y As Long,ByVal ori
      As Long,ByVal font As Long,ByVal typee As Long,ByVal hor_factor As Long,ByVal ver_factor
      As Long,ByVal mode As Byte,ByVal numeric As Long,ByVal data As String)As Long
      Private Declare Function A_Print_Out Lib″WINPPLA.DLL″(ByVal width As Long,ByVal height As Long,
      ByVal copies As Long,ByVal amount As Long)As Long
      Private Declare Sub A_ClosePrn Lib″WINPPLA.DLL″()
      ’’一維條碼打印窗體載入事件’’
      Private Sub Form_Load()   If DataEnvironmentl.rsCmdSel.State<>adStateOpen Then   DataEnvironmentl.rsCmdSel.Open  End If  i=0  limit=3  Combo2.Clear  If DataEnvironmentl.rsDateList.State<>adStateOpen Then   DataEnvironmentl.rsDateList.Open  End If  Do WhiIe Not DataEnvironmentl.rsDateList.EOF   Combo2.AddItem DataEnvironmentl.rsDateList.Fields(0).Value   DataEnvironmentl.rsDateList.MoveNext  LoopEnd SubTxtRFID按下回車鍵事件,獲取對應(yīng)豬耳標(biāo)號Private Sub TxtRFID_KeyPress(KeyAscii As Integer)On Error Resume NextIf KeyAscii=vbKeyReturn Then  With DataEnvironmentl.rsNumberSel  If .State<>adStateClosed Then   .Close  End If  DataEnvironmentl.Commands(″NumberSel″).Parameters(0)=Trim(TxtRFID.Text)  .Open  TxtEarmark.Text=.Fields(″豬耳標(biāo)號″)   End WithEnd IfEnd Sub一維條碼打印事件Private Sub CmdPrn_Click()Dim intI As IntegerDim i As Integer<!-- SIPO <DP n="12"> --><dp n="d12"/>intI=Val(Trim(TxtNumber.Text))For i=1 To intI   Print A_CreatePrn(1,″a22″)   Print A_Set_Darkness(10)   Print A_Prn_Barcode(25,10,1,69,0,10,50,98,1,″A″&amp; Mid(TxtEarmark.Text,7,9))   Print A_Prn_Text(20,70,1,4,0,1,1,110,2,TxtEarmark.Text)   Print A_Print_Out(1,1,1,1)   Call A_ClosePrnNext iEnd Sub
      以上豬肉可追溯系統(tǒng)中的豬個(gè)體標(biāo)識控制方法已在南京天環(huán)養(yǎng)殖場、南京天環(huán)屠宰場等地開始使用。經(jīng)過四批二維條碼耳標(biāo)、電子標(biāo)識、一維條碼標(biāo)簽的自動讀取試驗(yàn),試驗(yàn)結(jié)果表明,可顯著提高豬個(gè)體標(biāo)識的自動化識別水平,耳標(biāo)自動讀取成功率為85%以上,標(biāo)識控制準(zhǔn)確率100%。
      表1 二維條碼耳標(biāo)讀取試驗(yàn)結(jié)果
      權(quán)利要求
      1、豬個(gè)體標(biāo)識的一種控制方法,包括個(gè)體標(biāo)識設(shè)備和軟件的個(gè)體標(biāo)識控制模塊,個(gè)體標(biāo)識模塊采用了N層結(jié)構(gòu),即數(shù)據(jù)庫、數(shù)據(jù)訪問層、業(yè)務(wù)層以及客戶界面;數(shù)據(jù)訪問層和業(yè)務(wù)層全部采用組件技術(shù)開發(fā)方法,其特征在于
      ——在生豬養(yǎng)殖階段采用二維條碼耳標(biāo);
      ——在生豬屠宰階段,當(dāng)生豬去頭時(shí),用二維條碼閱讀器讀取條形碼的信息,作為豬耳標(biāo)號,傳入計(jì)算機(jī),由程序模塊完成二維條碼數(shù)據(jù)的保存;
      ——豬劈半后,在每一片肉上掛上一個(gè)無線射頻卡;
      ——讀取每個(gè)射頻卡的信息,作為電子標(biāo)識號,傳入計(jì)算機(jī),由程序模塊完成無線射頻卡數(shù)據(jù)的保存;
      ——當(dāng)一批豬屠宰完成后,從數(shù)據(jù)庫中讀取豬耳標(biāo)號與電子標(biāo)識號,通過程序模塊完成耳標(biāo)號與電子標(biāo)識號的對應(yīng);
      ——當(dāng)肉進(jìn)入冷庫冷藏后,再次讀取每個(gè)射頻卡的信息,程序模塊根據(jù)射頻卡數(shù)據(jù)從數(shù)據(jù)庫中獲得相應(yīng)的豬耳標(biāo)號;
      ——將豬耳標(biāo)號轉(zhuǎn)換為一維條碼的信息,傳遞給條碼打印機(jī),打印一維條碼標(biāo)簽,貼在每一片豬肉上,完成豬肉生產(chǎn)各階段的個(gè)體標(biāo)識過程。
      2、根據(jù)權(quán)利要求1所述的豬個(gè)體標(biāo)識的一種控制方法,其中實(shí)現(xiàn)豬個(gè)體標(biāo)識的全程控制的″耳標(biāo)號控制″程序模塊、″電子標(biāo)識號控制″程序模塊、″耳標(biāo)號與電子標(biāo)識號聯(lián)合控制″程序模塊和″一維條碼打印控制″程序模塊如下
      #Region″耳標(biāo)號控制″
      將耳標(biāo)號保存功能單獨(dú)列出,當(dāng)執(zhí)行BtOK.Click事件時(shí)調(diào)用SaveData方法
      Public Sub SaveData(ByVal textstr As String,ByVal usedate As DateTime,ByVal mode As String,ByVal slaughter As String,ByVal farmname As String)
      If textstr=config.Earmark1 Then’沒有二維條碼耳標(biāo)的豬用config.Earmark1(即99999999999999)表示
      EarMark=″″
      EarMark=textstr
      Dim accountSystem As New SMEarmark(0,textstr,usedate,mode,slaughter,farmname)
      accountSystem.Save()
      ElseIf textstr=config.Earmark2 Then’有二維條碼耳標(biāo)的豬但無法讀取耳標(biāo)號時(shí)用config.Earmark2(即88888888888888)表示
      EarMark=″″
      EarMark=textstr
      Dim accountSystem As New SMEarmark(0,textstr,usedate,mode,slaughter,farmname)
      accountSystem.Save()
      Else’自動讀取系統(tǒng)豬耳標(biāo)號
      EarMark=textstr
      Dim useid As Integer
      If EarMark<>″″Then’如果輸入的耳標(biāo)數(shù)據(jù)不為空,則判斷該耳標(biāo)號是否已經(jīng)保存在數(shù)據(jù)庫中
      useid=SMEarmark.GetID(EarMark)
      End If
      If useid<>0 Then’如果沒有數(shù)據(jù)庫中沒有,則插入該記錄,否則修改該記錄
      Dim accountSystem As New SMEarmark(useid,textstr,usedate,mode,slaughter,
      farmname)
      accountSystem.Save()
      Else
      Dim accountSystem As New SMEarmark(0,textstr,usedate,mode,slaughter,farmname)
      accountSystem.Save()
      End If
      End If
      End Sub從數(shù)據(jù)庫中讀取數(shù)據(jù)
      Public Sub EarmarkFromDatabase(ByVal usedate As DateTime)
      Dim earmark As SMEarmark
      Dim config As IDataConn=New ConnStr
      Dim number As Integer=0
      Dim earstr As String
      Dim ArrEarmark As New ArrayList
      Dim dv As DataView
      dv=SMEarmark.GetEarmarkByDate(usedate)
      If dv.Table.Rows.Count>0 Then
      TxtCount.Text=dv.Table.Rows.Count
      Dim dr As DataRow
      For Each dr In dv.Table.Rows
      earstr=Trim(dr(1).ToString)
      ArrEarmark.Add(earstr+″,″+Trim(dr(2).ToString))
      If earstr=config.Earmark1 Then’非系統(tǒng)豬
      number=number+1
      End If
      Next dr
      TxtNoCount.Text=number
      End If
      ListEarmark.DataSource=ArrEarmark
      ListEarmark.DataBind()
      End Sub
      條碼閱讀器讀取的數(shù)據(jù)直接輸入到Txtearmark文本框中,因?yàn)闂l碼閱讀器讀取數(shù)據(jù)是以回車鍵結(jié)束,因此執(zhí)行Page_Load事件;Private Sub Page_Load(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles MyBase.Load
      If Not IsPostBack Then’初始化頁的用戶代碼
      DListName.DataSource=SMCorporation.GetCorporationName’綁定屠宰場名稱控件
      DListName.DataBind()
      DlistFarm.DataSource=SMCorporation.GetCorporationName’綁定屠宰場名稱控件
      DlistFarm.DataBind()
      Dim focus As GetFocus
      focus.SetFocus(Txtearmark)’獲得焦點(diǎn)
      txtdate.Text=Today
      EarmarkFromDatabase(Convert.ToDateTime(txtdate.Text).ToString(″d″))
      ListEarmark.DataBind()
      Else
      If Txtearmark.Text<>″″Then’如果輸入的耳標(biāo)數(shù)據(jù)不為空,則該保存耳標(biāo)號到數(shù)據(jù)庫中
      SaveData(Txtearmark.Text,Convert.ToDateTime(txtdate.Text).ToString(″d″),
      DListMode.SelectedValue,TxtSlaughter.Text,TxtFarmname.Text)
      Txtearmark.Text=″″
      End If
      EarmarkFromDatabase(Convert.ToDateTime(txtdate.Text).ToString(″d″))
      Dim focus As GetFocus
      focus.SetFocus(Txtearmark)’獲得焦點(diǎn)
      End If
      End Sub
      點(diǎn)擊確定按鈕也可保存數(shù)據(jù),這時(shí)執(zhí)行BtOK.Click事件 Private Sub BtOK_Click(ByVal sender As Object,ByVal e As System.EventArgs)Handles BtOK.Click
      If Txtearmark.Text<>″″Then
      SaveData(Txtearmark.Text,Convert.ToDateTime(txtdate.Text).ToString(″d″),DListMode.SelectedValue,TxtSlaughter.Text,TxtFarmname.Text)
      Txtearmark.Text=″″
      End If
      Txtearmark.Text=″″
      EarmarkFromDatabase(Convert.ToDateTime(txtdate.Text).ToString(″d″))
      Dim focus As GetFocus
      focus.SetFocus(Txtearmark)’獲得焦點(diǎn)
      End Sub#End Region#Region″電子標(biāo)識號控制″
      Public Sub SaveData(ByVal textstr As String,ByVal number As String,ByVal usedate As DateTime)
      Dim useid As Integer
      useid=SMPipelining.GetID(textstr,usedate)
      If useid<>0 Then
      Dim accountSystem As New SMPipelining(useid,textstr,number,usedate)
      accountSystem.Save()
      Else
      Dim accountSystem As New SMPipelining(0,textstr,number,usedate)
      accountSystem.Save()
      End If
      End Sub#End Region#Region″從數(shù)據(jù)庫中讀取″
      Public Function ReaderDatabase(ByVal number As String,ByVal usedate As DateTime)As String
      Dim earmark As SMEarmark
      Dim ReadString As String
      Dim dv As DataView=SMPipelining.GetdetailsDataViewBynumberdate(number,usedate)
      If dv.Table.Rows.Count>0 Then
      ReadString=″″
      Dim dr As DataRow
      For Each dr In dv.Table.Rows
      ReadString=ReadString+ControlChars.Cr+Trim(dr(1).ToString)+″,″+Trim(dr(2).ToString)+″,″+Trim(dr(3).ToString)
      Next dr
      End If
      Return ReadString
      End Function#End Region
      無線射頻標(biāo)簽閱讀器讀取的數(shù)據(jù)直接輸入到TxtRFIDOne文本框中,因?yàn)殚喿x器讀取數(shù)據(jù)是以回車鍵結(jié)束,因此執(zhí)行Page_Load事件。Private Sub Page_Load(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles MyBase.Load
      If Not IsPostBack Then’初始化頁的用戶代碼
      Dim focus As GetFocus
      focus.SetFocus(TxtRFIDOne)’獲得焦點(diǎn)
      Session(″number″)=1
      txtdate.Text=Today
      TxtRFIDLists.Text=ReaderDatabase(DListNumber.SelectedValue,txtdate.Text)
      Else’重新加載該頁的用戶代碼
      If TxtRFIDOne.Text<>″″Then
      SaveData(TxtRFIDOne.Text,DListNumber.SelectedValue,Convert.ToDateTime(txtdate.Text).ToString(″d″))
      TxtRFIDOne.Text=″″
      End If
      TxtRFIDLists.Text=ReaderDatabase(DListNumber.SelectedValue,txtdate.Text)
      Dim focus As GetFocus
      focus.SetFocus(TxtRFIDOne)’獲得焦點(diǎn)
      End If
      End Sub
      點(diǎn)擊確定按鈕也可保存數(shù)據(jù),這時(shí)執(zhí)行BtOK.Click事件 Private Sub BtOK_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)
      If TxtRFIDOne.Text<>″″Then
      SaveData(TxtRFIDOne.Text,DListNumber.SelectedValue,Convert.ToDateTime(txtdate.Text).ToString(″d″))
      TxtRFIDOne.Text=″″
      End If
      TxtRFIDLists.Text=ReaderDatabase(DListNumber.SelectedValue,txtdate.Text)
      Dim focus As GetFocus
      focus.SetFocus(TxtRFIDOne)’獲得焦點(diǎn)
      End Sub#Region″耳標(biāo)號與電子標(biāo)識號聯(lián)合控制″根據(jù)日期讀取數(shù)據(jù)庫中記錄的耳標(biāo)號
      Private Function ArrEarDatabase(ByVal usedate As DateTime)As ArrayList
      Dim dv As DataView
      Dim ArrEarID As New ArrayList
      dv=SMEarmark.GetEarmarkByDate(usedate)
      If dv.Table.Rows.Count>0 Then
      Dim dr As DataRow
      For Each dr In dv.Table.Rows
      ArrEarID.Add(dr(0).ToString)’earmarkID
      Next dr
      End If
      Return ArrEarID
      End Function根據(jù)日期和胴體上掛的電子標(biāo)簽個(gè)數(shù)讀取數(shù)據(jù)庫中記錄的電子標(biāo)識號
      Private Function ArrRFDatabase(ByVal number As String,ByVal usedate As DateTime)As ArrayList
      Dim dv As DataView
      Dim ArrEar As New ArrayList
      dv=SMPipelining.GetdetailsDataViewBynumberdate(number,usedate)
      If dv.Table.Rows.Count>0 Then
      Dim dr As DataRow
      For Each dr In dv.Table.Rows
      ArrEar.Add(dr(0).ToString)’PipeliningID
      Next dr
      End If
      Return ArrEar
      End Function
      #End Region#Region″查看耳標(biāo)事件″
      Private Sub BtnEarOK_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)HandlesBtnEarOK.Click
      TxtLists1.Text=EarReaderDatabase(Convert.ToDateTime(txtdate.Text).ToString(″d″))
      End Sub#End Region#Region″查看電子標(biāo)識事件″
      Private Sub BtnRFIDOK_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)HandlesBtnRFIDOK.Click
      TxtLists2.Text=RFReaderDatabase(DListNumber.SelectedValue,Convert.ToDateTime(txtdate.Text).ToString(″d″))
      End Sub#End Region#Region″查看耳標(biāo)與電子標(biāo)識關(guān)系的事件″
      Private Sub BtnQuery_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)HandlesBtnQuery.Click
      Dim ArrEarmarkID As New ArrayList
      Dim ArrRFID As New ArrayList
      Dim earstr1,RFStr,IDStr As String
      IDStr=″″
      ArrEarmarkID=ArrEarDatabase(Convert.ToDateTime(txtdate.Text).ToString(″d″))
      ArrRFID=ArrRFDatabase(DListNumber.SelectedValue,Convert.ToDateTime(txtdate.Text).ToString(″d″))
      Dim i,j,k,earcount,Rfcount,number As Integer
      earcount=ArrEarmarkID.Count
      Rfcount=ArrRFID.Count
      number=Convert.ToInt32(DListNumber.SelectedValue)
      j=0
      For i=0 To earcount-1
      If j>Rfcount-1 Then
      Exit For
      End If
      Dim earclass As New SMEarmark(Convert.ToInt32(ArrEarmarkID.Item(i)))
      earclass.Load()
      earstr1=earclass.earmark
      IDStr=IDStr+Trim(earstr1)+″,″
      For k=1To number
      Dim RFClass As New SMPipelining(ArrRFID.Item(j))
      RFClass.Load()
      RFStr=RFClass.Pipelining
      IDStr=IDStr+Trim(RFStr)+″,″
      j=j(luò)+1
      Next
      IDStr=IDStr+ControlChars.Cr
      Next
      TxtID.Text=IDStr End Sub#End Region#Region″保存耳標(biāo)與電子標(biāo)識″
      Private Sub BtOK_Click(ByVal sender As Object,ByVal e As System.EventArgs)Handles BtOK.Click
      Dim ArrEarmarkID As New ArrayList
      Dim ArrRFID As New ArrayList
      Dim earstr1,RFStr As String
      Dim useid As Integer
      ArrEarmarkID=ArrEarDatabase(Convert.ToDateTime(txtdate.Text).ToString(″d″))
      ArrRFID=ArrRFDatabase(DListNumber.SelectedValue,Convert.ToDateTime(txtdate.Text).ToString(″d″))
      Dim i,j,k,earcount,Rfcount,number As Integer
      earcount=ArrEarmarkID.Count
      Rfcount=ArrRFID.Count
      number=Convert.ToInt32(DListNumber.SelectedValue)
      j=0
      For i=0 To earcount-1
      If j>Rfcount-1 Then
      Exit For
      End If
      Dim earclass As New SMEarmark(Convert.ToInt32(ArrEarmarkID.Item(i)))
      earclass.Load()
      earstr1=earclass.earmark
      Dim config As IDataConn=New ConnStr
      If earstr1=config.Earmark1 Then’非本系統(tǒng)豬耳標(biāo)號
      j=j(luò)+number
      Exit For
      ElseIf earstr1=config.Earmark2 Then’本系統(tǒng)豬,但無法讀取耳標(biāo)號
      earstr1=TxtBatch.Text
      End If
      ’*************保存屠宰記錄*********************
      useid=SMPigButcher.GetID(earstr1)
      If useid<>0 Then
      Dim accountSystem As New SMPigButcher(useid,earstr1,earclass.notedate,earclass.mode,earclass.slaughter,earclass.farmname)
      accountSystem.Save()
      Else
      Dim accountSystem As New SMPigButcher(0,earstr1,earclass.notedate,earclass.mode,earclass.slaughter,earclass.farmname)
      accountSystem.Save()
      End If
      ’***************耳標(biāo)與電子標(biāo)識號*********************
      For k=1 To number
      Dim RFClass As New SMPipelining(ArrRFID.Item(j))
      RFClass.Load()
      RFStr=RFClass.Pipelining
      useid=SMEarPipelining.GetID(earstr1,RFStr,RFClass.Number)
      If useid<> 0 Then
      Dim accountSystem As New SMEarPipelining(useid,earstr1,RFStr,RFClass.Number,Convert.ToDateTime(txtdate.Text).ToString(″d″),″″)
      accountSystem.Save()
      Else
      Dim accountSystem As New SMEarPipelining(0,earstr1,RFStr,RFClass.Number,Convert.ToDateTime(txtdate.Text).ToString(″d″),″″)
      accountSystem.Save()
      End If
      j=j(luò)+1
      Next
      Next
      End Sub#End Region一維條碼打印控制(采用VB 6.0中文版編寫)打印機(jī)控制函數(shù)WinPPLA.DLL Version 2.7AW″Private Declare Function A_CreatePrn Lib″WINPPLA.DLL″(ByVal selection As Long,ByVal filename As
      String)As LongPrivate Declare Function A_Set_Darkness Lib″WINPPLA.DLL″(ByVal darkness As Long)As LongPrivate Declare Function A_Prn_Barcode Lib″WINPPLA.DLL″(ByVal x As Long,ByVal y As Long,ByVal
      ori As Long,ByVal typee As Byte,ByVal narrow As Long,ByVal width As Long,ByVal height
      As Long,ByVal mode As Byte,ByVal numeric As Long,ByVal data As String)As LongPrivate Declare Function A_Prn_Text Lib″WINPPLA.DLL″(ByVal x As Long,ByVal y As Long,ByVal ori
      As Long,ByVal font As Long,ByVal typee As Long,ByVal hor_factor As Long,ByVal ver_factor
      As Long,ByVal mode As Byte,ByVal numeric As Long,ByVal data As String)As LongPrivate Declare Function A_Print_Out Lib″WINPPLA.DLL″(ByVal width As Long,ByVal height As Long,
      ByVal copies As Long,ByVal amount As Long)As LongPrivate Declare Sub A_ClosePrn Lib″WINPPLA.DLL″()”一維條碼打印窗體載入事件”Private Sub Form_Load() If DataEnvironment1.rsCmdSel.State<>adStateOpen Then
      DataEnvironment1.rsCmdSel.Open End If i=0 limit=3 Combo2.Clear If DataEnvironment1.rsDateList.State<>adStateOpen Then
      DataEnvironment1.rsDateList.Open End If Do While Not DataEnvironment1.rsDateList.EOF
      Combo2.AddItem DataEnvironment1.rsDateList.Fields(0).Value
      DataEnvironment1.rsDateList.MoveNext LoopEnd SubTxtRFID按下回車鍵事件,獲取對應(yīng)豬耳標(biāo)號Private Sub TxtRFID_KeyPress(KeyAscii As Integer) On Error Resume Next If KeyAscii=vbKeyReturn Then
      With DataEnvironment1.rsNumberSel
      If.State<>adStateClosed Then
      .Close
      End If
      DataEnvironment1.Commands(″NumberSel″).Parameters(0)=Trim(TxtRFID.Text)
      .Open
      TxtEarmark.Text=.Fields(″豬耳標(biāo)號″)
      End With End IfEnd Sub一維條碼打印事件Private Sub CmdPrn_Click()Dim intI As IntegerDim i As IntegerintI=Val(Trim(TxtNumber.Text))For i=1To intI
      Print A_CreatePrn(1,″a22″)
      Print A_Set_Darkness(10)
      Print A_Prn_Barcode(25,10,1,69,0,10,50,98,1,″A″& Mid(TxtEarmark.Text,7,9))
      Print A_Prn_Text(20,70,1,4,0,1,1,110,2,TxtEarmark.Text)
      Print A_Print_Out(1,1,1,1)
      Call A_ClosePrn Next iEnd Sub。
      全文摘要
      本項(xiàng)發(fā)明涉及豬個(gè)體標(biāo)識的一種控制方法,屬于豬肉產(chǎn)品安全生產(chǎn)數(shù)字化管理控制領(lǐng)域。在生豬養(yǎng)殖階段采用二維條碼耳標(biāo),在生豬屠宰階段,由程序模塊完成二維條碼數(shù)據(jù)的保存;豬劈半后,在每一片肉上掛上一個(gè)無線射頻卡,作為電子標(biāo)識號,通過程序模塊完成耳標(biāo)號與電子標(biāo)識號的對應(yīng);當(dāng)肉進(jìn)入冷庫冷藏后,程序模塊轉(zhuǎn)換為一維條碼的信息打印貼在每一片豬肉上,完成豬肉生產(chǎn)各階段的個(gè)體標(biāo)識控制過程。本發(fā)明將相關(guān)硬件與系統(tǒng)管理軟件緊密結(jié)合。它既能夠適應(yīng)現(xiàn)代化豬場飼養(yǎng)管理要求,又能夠提供個(gè)體標(biāo)識的自動化水平,提高生產(chǎn)效率。同時(shí),它還可以通過軟件的網(wǎng)絡(luò)模塊實(shí)現(xiàn)個(gè)體標(biāo)識信息在不同階段的資源共享,為豬肉可追溯系統(tǒng)的實(shí)施提供條件。
      文檔編號G06F17/00GK1716285SQ20051004010
      公開日2006年1月4日 申請日期2005年5月20日 優(yōu)先權(quán)日2005年5月20日
      發(fā)明者陸昌華, 謝菊芳, 王立方, 胡肄農(nóng) 申請人:江蘇省農(nóng)業(yè)科學(xué)院
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1