欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

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

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

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


圖1.二維條碼耳標(biāo)
圖2.無(wú)線(xiàn)射頻卡
圖3.基本網(wǎng)絡(luò)構(gòu)架
圖4.耳標(biāo)與RFID的轉(zhuǎn)換模塊
圖5.個(gè)體標(biāo)識(shí)數(shù)據(jù)庫(kù)模型
圖6.耳標(biāo)號(hào)保存web窗體
圖7.電子標(biāo)識(shí)號(hào)保存web窗體
圖8.耳標(biāo)號(hào)與電子標(biāo)識(shí)號(hào)保存web窗體
圖9.一維條碼打印Windows窗體
具體實(shí)施例方式
本發(fā)明為豬個(gè)體標(biāo)識(shí)的一種控制方法,包括
1、設(shè)計(jì)軟件的基本構(gòu)架
個(gè)體標(biāo)識(shí)功能模塊基于.NET框架,采用了N層結(jié)構(gòu)即數(shù)據(jù)庫(kù)、數(shù)據(jù)訪(fǎng)問(wèn)層、業(yè)務(wù)層以及客戶(hù)界面;采用組件技術(shù)開(kāi)發(fā)方法,即數(shù)據(jù)訪(fǎng)問(wèn)層和業(yè)務(wù)層全部由組件構(gòu)成。
2、設(shè)計(jì)軟件基本組件
(1)數(shù)據(jù)訪(fǎng)問(wèn)組件
a、采用SQL語(yǔ)句和存儲(chǔ)過(guò)程兩種形式訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)。
b、可以將查詢(xún)結(jié)果以DataSet或DataView結(jié)構(gòu)形式返回?cái)?shù)據(jù)集。
c、可以執(zhí)行查詢(xún),不返回任何執(zhí)行結(jié)果。
d、可以執(zhí)行查詢(xún),只返回第一行第一個(gè)列的值。
(2)數(shù)據(jù)庫(kù)連接組件
a、在實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的訪(fǎng)問(wèn)時(shí),提供數(shù)據(jù)庫(kù)服務(wù)器的基本參數(shù)。
(3)個(gè)體標(biāo)識(shí)組件
a、管理養(yǎng)殖階段二維條碼耳標(biāo),實(shí)現(xiàn)養(yǎng)殖階段二維條碼耳標(biāo)的查詢(xún)、添加、修改、刪除。
b、管理屠宰階段二維條碼耳標(biāo),實(shí)現(xiàn)屠宰階段二維條碼耳標(biāo)的查詢(xún)、添加、修改、刪除。
c、管理無(wú)線(xiàn)射頻卡,實(shí)現(xiàn)電子標(biāo)識(shí)信息的查詢(xún)、添加、修改、刪除。
d、管理豬耳標(biāo)號(hào)與電子標(biāo)識(shí)號(hào)的對(duì)應(yīng),實(shí)現(xiàn)耳標(biāo)號(hào)與電子標(biāo)識(shí)對(duì)應(yīng)信息的查詢(xún)、添加、修改、刪除。
e、實(shí)現(xiàn)一維條碼標(biāo)簽的數(shù)據(jù)獲取和打印。
(4)網(wǎng)絡(luò)模塊
a、數(shù)據(jù)上傳功能通過(guò)養(yǎng)殖階段的二維條碼耳標(biāo)信息以XML形式,通過(guò)Web Service,將資料上傳至Internet,進(jìn)行個(gè)體標(biāo)識(shí)信息的統(tǒng)一管理。
b、個(gè)體標(biāo)識(shí)信息的發(fā)布可以將個(gè)體標(biāo)識(shí)信息發(fā)布到Internet,供消費(fèi)者查看。
各個(gè)組件之間,既相互獨(dú)立,又通過(guò)各個(gè)組件間的接口相互聯(lián)系。通過(guò)組件接口間的信息傳遞,各個(gè)組件相互協(xié)調(diào)配合,最終實(shí)現(xiàn)了從豬飼養(yǎng)、屠宰、銷(xiāo)售的個(gè)體識(shí)別,也通過(guò)網(wǎng)絡(luò)模塊實(shí)現(xiàn)了數(shù)據(jù)資源共享。
3、支持硬件的設(shè)計(jì)與安裝
a、基本的硬件組成
(1)條碼耳標(biāo)豬場(chǎng)的所有豬,從第一次免疫起就有二維條碼耳標(biāo)作為其身份的識(shí)別。
(2)條碼掃描器(讀卡器)讀取豬的條碼耳標(biāo)上的條形碼,將條形碼傳給識(shí)別設(shè)備,由識(shí)別設(shè)備提交給系統(tǒng)軟件,實(shí)現(xiàn)豬耳標(biāo)號(hào)的管理。
(3)無(wú)線(xiàn)射頻卡在屠宰劈半后,掛在每一片肉上,作為身份識(shí)別。
(4)讀卡器讀取豬的射頻卡,將卡的信息傳給識(shí)別設(shè)備,由識(shí)別設(shè)備提交給系統(tǒng)軟件,實(shí)現(xiàn)豬電子標(biāo)識(shí)號(hào)的管理。
(5)讀卡器讀取豬的射頻卡,將卡的信息傳給識(shí)別設(shè)備,由識(shí)別設(shè)備提交給系統(tǒng)軟件,軟件根據(jù)豬電子標(biāo)識(shí)號(hào)獲取豬耳標(biāo)號(hào),傳遞給打印機(jī),打印一維條碼標(biāo)簽。
b通過(guò)自動(dòng)識(shí)別系統(tǒng)完成識(shí)別的基本步驟
(1)耳標(biāo)采用農(nóng)業(yè)部統(tǒng)一使用的塑料耳標(biāo)。
(2)條形碼采用市場(chǎng)上通用的Data Matrix,在耳標(biāo)上用激光進(jìn)行雕刻。
(3)條碼掃描器采用和條形碼配套的掃描器。
(4)無(wú)線(xiàn)射頻卡采用市場(chǎng)上通用的無(wú)線(xiàn)射頻卡。
(5)識(shí)別器采用和無(wú)線(xiàn)射頻卡配套的識(shí)別器。
(6)一維條碼打印機(jī)采用市場(chǎng)上通用的一維條碼打印機(jī)。
完成任務(wù)的步驟包括
——在生豬養(yǎng)殖階段,每只豬佩戴兩只二維條碼耳標(biāo);
——通過(guò)軟件系統(tǒng)控制程序?qū)⒚恐回i的兩個(gè)二維條碼耳標(biāo)的對(duì)應(yīng)關(guān)系保存在數(shù)據(jù)庫(kù)中;
——生豬出售時(shí),將養(yǎng)殖階段二維條碼耳標(biāo)的信息上傳到Web服務(wù)器;
——在生豬屠宰階段,當(dāng)生豬去頭時(shí),用條碼閱讀器隨機(jī)讀取每只豬的兩個(gè)耳標(biāo)中的一個(gè)條形碼的信息;
——通過(guò)計(jì)算機(jī)的鍵盤(pán)口,將讀取的條形碼信息轉(zhuǎn)換為豬耳標(biāo)號(hào)數(shù)據(jù),傳入計(jì)算機(jī);
——然后軟件系統(tǒng)控制程序?qū)⒇i耳標(biāo)號(hào)在數(shù)據(jù)庫(kù)中的存儲(chǔ);
——豬劈半后,在每一片肉上掛上一個(gè)無(wú)線(xiàn)射頻卡;
——卡信息由閱讀器讀取,通過(guò)計(jì)算機(jī)的鍵盤(pán)口,將讀取的射頻卡信息轉(zhuǎn)換為豬的電子標(biāo)識(shí)號(hào)數(shù)據(jù),傳入計(jì)算機(jī)。豬耳標(biāo)號(hào)與電子標(biāo)識(shí)號(hào)的轉(zhuǎn)換包括二維條碼耳標(biāo)號(hào)和電子標(biāo)識(shí)號(hào)的轉(zhuǎn)換,主要通過(guò)數(shù)據(jù)庫(kù)來(lái)實(shí)現(xiàn),結(jié)構(gòu)如圖5。
豬在流水線(xiàn)上都是依次排列的,在去頭時(shí)依次讀取二維條碼耳標(biāo)號(hào),存入數(shù)據(jù)表豬耳標(biāo)號(hào)中。對(duì)無(wú)法讀取的號(hào)碼,系統(tǒng)用“99999999999999”進(jìn)行識(shí)別。對(duì)非試驗(yàn)耳標(biāo)的耳標(biāo)號(hào)碼用“88888888888888”進(jìn)行識(shí)別。這樣屠宰線(xiàn)上所有豬的耳標(biāo)號(hào)在數(shù)據(jù)表中進(jìn)行順序排列。在胴體劈半后,依次在每頭豬的兩片肉上掛電子標(biāo)識(shí),并將電子標(biāo)識(shí)號(hào)存入數(shù)據(jù)表電子標(biāo)識(shí)號(hào)中。最后將兩個(gè)數(shù)據(jù)表中當(dāng)天的記錄一對(duì)二的讀取,存入數(shù)據(jù)表耳標(biāo)號(hào)與電子標(biāo)識(shí)號(hào)中,這樣某天的每一個(gè)電子標(biāo)識(shí)號(hào)就可以對(duì)應(yīng)唯一的耳標(biāo)號(hào)。在胴體冷卻時(shí),取下電子標(biāo)識(shí),讀取電子標(biāo)識(shí)號(hào),在數(shù)據(jù)庫(kù)中獲取對(duì)應(yīng)的耳標(biāo)號(hào),打印出一維條碼貼在胴體上,直到超市出售。通過(guò)這樣的耳標(biāo)號(hào)與電子標(biāo)識(shí)號(hào)的相互轉(zhuǎn)換(耳標(biāo)號(hào)與電子標(biāo)識(shí)號(hào)的轉(zhuǎn)換模塊如圖5),超市出售的每片肉都可以對(duì)應(yīng)原始的耳標(biāo)號(hào),根據(jù)耳標(biāo)號(hào)可以獲取所有生豬屠宰檔案信息。在表豬耳標(biāo)號(hào)中,同時(shí)記錄屠宰方式,主要是為了在保存豬耳標(biāo)號(hào)的同時(shí)保存該豬的生豬屠宰記錄,減少工作量。
——軟件系統(tǒng)的控制程序?qū)⒇i的電子標(biāo)識(shí)號(hào)在數(shù)據(jù)庫(kù)中的存儲(chǔ);
——當(dāng)一批豬屠宰完成后,軟件系統(tǒng)的控制程序通過(guò)個(gè)體標(biāo)識(shí)組件從數(shù)據(jù)庫(kù)中分別讀取豬耳標(biāo)號(hào)與電子標(biāo)識(shí)號(hào),完成耳標(biāo)號(hào)與電子標(biāo)識(shí)號(hào)的對(duì)應(yīng);
——當(dāng)肉進(jìn)入冷庫(kù)冷藏后,無(wú)線(xiàn)射頻卡閱讀器再次讀取每個(gè)射頻卡的信息。通過(guò)計(jì)算機(jī)的鍵盤(pán)口,將讀取的射頻卡信息轉(zhuǎn)換為豬的電子標(biāo)識(shí)號(hào)數(shù)據(jù),傳入計(jì)算機(jī);
——然后軟件系統(tǒng)控制程序根據(jù)電子標(biāo)識(shí)號(hào),從數(shù)據(jù)庫(kù)中讀取相應(yīng)的豬耳標(biāo)號(hào);
——將豬耳標(biāo)號(hào)轉(zhuǎn)換為一維條碼的信息,傳遞給條碼打印機(jī),打印一維條碼標(biāo)簽。工作人員將條碼標(biāo)簽貼在每一片豬肉上,完成豬肉生產(chǎn)各階段的個(gè)體標(biāo)識(shí)過(guò)程。
通過(guò)以上相互關(guān)聯(lián)的硬件設(shè)備,加上系統(tǒng)軟件作為核心支持,最終實(shí)現(xiàn)了豬個(gè)體識(shí)別的自動(dòng)化。c系統(tǒng)軟件的安裝對(duì)系統(tǒng)軟硬件的要求是
●CPU在奔騰II以上
●內(nèi)存128MB以上
●2G以上硬盤(pán)
●操作系統(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)。
通過(guò)以上三個(gè)相互關(guān)聯(lián)的硬件設(shè)備,加上系統(tǒng)軟件作為核心支持,最終實(shí)現(xiàn)了,豬個(gè)體識(shí)別自動(dòng)化。
其中實(shí)現(xiàn)豬個(gè)體標(biāo)識(shí)的全程控制的″耳標(biāo)號(hào)控制″程序模塊、″電子標(biāo)識(shí)號(hào)控制″程序模塊、″耳標(biāo)號(hào)與電子標(biāo)識(shí)號(hào)聯(lián)合控制序模塊和″一維條碼打印控制″程序模塊如下
#Region″耳標(biāo)號(hào)控制″(圖6)
將耳標(biāo)號(hà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’沒(méi)有二維條碼耳標(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)的豬但無(wú)法讀取耳標(biāo)號(hào)時(shí)用config.Earmark2(即88888888888888)表示  EarMark=″″  EarMark=textstr  Dim accountSystem As New SMEarmark(0,textstr,usedate,mode,slaughter,farmname)  accountSystem.Save()  Else’自動(dòng)讀取系統(tǒng)豬耳標(biāo)號(hào)  EarMark=textstr  Dim useid As Integer  If EarMark<>″″Then’如果輸入的耳標(biāo)數(shù)據(jù)不為空,則判斷該耳標(biāo)號(hào)是否已經(jīng)保存在數(shù)據(jù)庫(kù)中  useid=SMEarmark.GetID(EarMark)  End If  If useid<>0 Then’如果沒(méi)有數(shù)據(jù)庫(kù)中沒(méi)有,則插入該記錄,否則修改該記錄  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ù)庫(kù)讀取耳標(biāo)號(hà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ù)是以回車(chē)鍵結(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’初始化頁(yè)的用戶(hù)代碼  DListName.DataSource=SMCorporation.GetCorporationName’綁定屠宰場(chǎng)名稱(chēng)控件  DListName.DataBind()  DlistFarm.DataSource=SMCorporation.GetCorporationName’綁定屠宰場(chǎng)名稱(chēng)控件  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)號(hào)到數(shù)據(jù)庫(kù)中  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)識(shí)號(hà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ù)庫(kù)中讀取″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
無(wú)線(xiàn)射頻標(biāo)簽閱讀器讀取的數(shù)據(jù)直接輸入到TxtRFIDOne文本框中,因?yàn)殚喿x器讀取數(shù)據(jù)是以回車(chē)鍵結(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’初始化頁(yè)的用戶(hù)代碼   Dim focus As GetFocus   focus.SetFocus(TxtRFIDOne)’獲得焦點(diǎn)   Session(″number″)=1   txtdate.Text=Today   TxtRFIDLists.Text=ReaderDatabase(DListNumber.SelectedValue,txtdate.Text)   Else’重新加載該頁(yè)的用戶(hù)代碼   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)號(hào)與電子標(biāo)識(shí)號(hào)聯(lián)合控制″(圖8)
根據(jù)日期讀取數(shù)據(jù)庫(kù)中記錄的耳標(biāo)號(hà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ù)庫(kù)中記錄的電子標(biāo)識(shí)號(hà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)識(shí)事件″  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)識(shí)關(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)識(shí)″  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)號(hào)  j=j(luò)+number  Exit For  ElseIf earstr1=config.Earmark2 Then’本系統(tǒng)豬,但無(wú)法讀取耳標(biāo)號(hà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)識(shí)號(hà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中文版編寫(xiě))(圖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按下回車(chē)鍵事件,獲取對(duì)應(yīng)豬耳標(biāo)號(hào)P(pán)rivate 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)號(hào)″)   End WithEnd IfEnd Sub一維條碼打印事件P(pán)rivate 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)識(shí)控制方法已在南京天環(huán)養(yǎng)殖場(chǎng)、南京天環(huán)屠宰場(chǎng)等地開(kāi)始使用。經(jīng)過(guò)四批二維條碼耳標(biāo)、電子標(biāo)識(shí)、一維條碼標(biāo)簽的自動(dòng)讀取試驗(yàn),試驗(yàn)結(jié)果表明,可顯著提高豬個(gè)體標(biāo)識(shí)的自動(dòng)化識(shí)別水平,耳標(biāo)自動(dòng)讀取成功率為85%以上,標(biāo)識(shí)控制準(zhǔn)確率100%。
表1 二維條碼耳標(biāo)讀取試驗(yàn)結(jié)果
權(quán)利要求
1、豬個(gè)體標(biāo)識(shí)的一種控制方法,包括個(gè)體標(biāo)識(shí)設(shè)備和軟件的個(gè)體標(biāo)識(shí)控制模塊,個(gè)體標(biāo)識(shí)模塊采用了N層結(jié)構(gòu),即數(shù)據(jù)庫(kù)、數(shù)據(jù)訪(fǎng)問(wèn)層、業(yè)務(wù)層以及客戶(hù)界面;數(shù)據(jù)訪(fǎng)問(wèn)層和業(yè)務(wù)層全部采用組件技術(shù)開(kāi)發(fā)方法,其特征在于
——在生豬養(yǎng)殖階段采用二維條碼耳標(biāo);
——在生豬屠宰階段,當(dāng)生豬去頭時(shí),用二維條碼閱讀器讀取條形碼的信息,作為豬耳標(biāo)號(hào),傳入計(jì)算機(jī),由程序模塊完成二維條碼數(shù)據(jù)的保存;
——豬劈半后,在每一片肉上掛上一個(gè)無(wú)線(xiàn)射頻卡;
——讀取每個(gè)射頻卡的信息,作為電子標(biāo)識(shí)號(hào),傳入計(jì)算機(jī),由程序模塊完成無(wú)線(xiàn)射頻卡數(shù)據(jù)的保存;
——當(dāng)一批豬屠宰完成后,從數(shù)據(jù)庫(kù)中讀取豬耳標(biāo)號(hào)與電子標(biāo)識(shí)號(hào),通過(guò)程序模塊完成耳標(biāo)號(hào)與電子標(biāo)識(shí)號(hào)的對(duì)應(yīng);
——當(dāng)肉進(jìn)入冷庫(kù)冷藏后,再次讀取每個(gè)射頻卡的信息,程序模塊根據(jù)射頻卡數(shù)據(jù)從數(shù)據(jù)庫(kù)中獲得相應(yīng)的豬耳標(biāo)號(hào);
——將豬耳標(biāo)號(hào)轉(zhuǎn)換為一維條碼的信息,傳遞給條碼打印機(jī),打印一維條碼標(biāo)簽,貼在每一片豬肉上,完成豬肉生產(chǎn)各階段的個(gè)體標(biāo)識(shí)過(guò)程。
2、根據(jù)權(quán)利要求1所述的豬個(gè)體標(biāo)識(shí)的一種控制方法,其中實(shí)現(xiàn)豬個(gè)體標(biāo)識(shí)的全程控制的″耳標(biāo)號(hào)控制″程序模塊、″電子標(biāo)識(shí)號(hào)控制″程序模塊、″耳標(biāo)號(hào)與電子標(biāo)識(shí)號(hào)聯(lián)合控制″程序模塊和″一維條碼打印控制″程序模塊如下
#Region″耳標(biāo)號(hào)控制″
將耳標(biāo)號(hà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’沒(méi)有二維條碼耳標(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)的豬但無(wú)法讀取耳標(biāo)號(hào)時(shí)用config.Earmark2(即88888888888888)表示
EarMark=″″
EarMark=textstr
Dim accountSystem As New SMEarmark(0,textstr,usedate,mode,slaughter,farmname)
accountSystem.Save()
Else’自動(dòng)讀取系統(tǒng)豬耳標(biāo)號(hào)
EarMark=textstr
Dim useid As Integer
If EarMark<>″″Then’如果輸入的耳標(biāo)數(shù)據(jù)不為空,則判斷該耳標(biāo)號(hào)是否已經(jīng)保存在數(shù)據(jù)庫(kù)中
useid=SMEarmark.GetID(EarMark)
End If
If useid<>0 Then’如果沒(méi)有數(shù)據(jù)庫(kù)中沒(méi)有,則插入該記錄,否則修改該記錄
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ù)庫(kù)中讀取數(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ù)是以回車(chē)鍵結(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’初始化頁(yè)的用戶(hù)代碼
DListName.DataSource=SMCorporation.GetCorporationName’綁定屠宰場(chǎng)名稱(chēng)控件
DListName.DataBind()
DlistFarm.DataSource=SMCorporation.GetCorporationName’綁定屠宰場(chǎng)名稱(chēng)控件
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)號(hào)到數(shù)據(jù)庫(kù)中
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)識(shí)號(hà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ù)庫(kù)中讀取″
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
無(wú)線(xiàn)射頻標(biāo)簽閱讀器讀取的數(shù)據(jù)直接輸入到TxtRFIDOne文本框中,因?yàn)殚喿x器讀取數(shù)據(jù)是以回車(chē)鍵結(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’初始化頁(yè)的用戶(hù)代碼
Dim focus As GetFocus
focus.SetFocus(TxtRFIDOne)’獲得焦點(diǎn)
Session(″number″)=1
txtdate.Text=Today
TxtRFIDLists.Text=ReaderDatabase(DListNumber.SelectedValue,txtdate.Text)
Else’重新加載該頁(yè)的用戶(hù)代碼
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)號(hào)與電子標(biāo)識(shí)號(hào)聯(lián)合控制″根據(jù)日期讀取數(shù)據(jù)庫(kù)中記錄的耳標(biāo)號(hà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ù)庫(kù)中記錄的電子標(biāo)識(shí)號(hà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)識(shí)事件″
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)識(shí)關(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)識(shí)″
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)號(hào)
j=j(luò)+number
Exit For
ElseIf earstr1=config.Earmark2 Then’本系統(tǒng)豬,但無(wú)法讀取耳標(biāo)號(hà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)識(shí)號(hà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中文版編寫(xiě))打印機(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″()”一維條碼打印窗體載入事件”P(pán)rivate 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按下回車(chē)鍵事件,獲取對(duì)應(yīng)豬耳標(biāo)號(hào)P(pán)rivate 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)號(hào)″)
End With End IfEnd Sub一維條碼打印事件P(pán)rivate 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)識(shí)的一種控制方法,屬于豬肉產(chǎn)品安全生產(chǎn)數(shù)字化管理控制領(lǐng)域。在生豬養(yǎng)殖階段采用二維條碼耳標(biāo),在生豬屠宰階段,由程序模塊完成二維條碼數(shù)據(jù)的保存;豬劈半后,在每一片肉上掛上一個(gè)無(wú)線(xiàn)射頻卡,作為電子標(biāo)識(shí)號(hào),通過(guò)程序模塊完成耳標(biāo)號(hào)與電子標(biāo)識(shí)號(hào)的對(duì)應(yīng);當(dāng)肉進(jìn)入冷庫(kù)冷藏后,程序模塊轉(zhuǎn)換為一維條碼的信息打印貼在每一片豬肉上,完成豬肉生產(chǎn)各階段的個(gè)體標(biāo)識(shí)控制過(guò)程。本發(fā)明將相關(guān)硬件與系統(tǒng)管理軟件緊密結(jié)合。它既能夠適應(yīng)現(xiàn)代化豬場(chǎng)飼養(yǎng)管理要求,又能夠提供個(gè)體標(biāo)識(shí)的自動(dòng)化水平,提高生產(chǎn)效率。同時(shí),它還可以通過(guò)軟件的網(wǎng)絡(luò)模塊實(shí)現(xiàn)個(gè)體標(biāo)識(shí)信息在不同階段的資源共享,為豬肉可追溯系統(tǒng)的實(shí)施提供條件。
文檔編號(hào)G06F17/00GK1716285SQ20051004010
公開(kāi)日2006年1月4日 申請(qǐng)日期2005年5月20日 優(yōu)先權(quán)日2005年5月20日
發(fā)明者陸昌華, 謝菊芳, 王立方, 胡肄農(nóng) 申請(qǐng)人:江蘇省農(nóng)業(yè)科學(xué)院
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
万全县| 乌鲁木齐县| 错那县| 托克托县| 哈密市| 邵阳市| 桂东县| 清水河县| 大埔县| 霍林郭勒市| 宽城| 鄂托克旗| 龙游县| 乐东| 阳曲县| 曲靖市| 时尚| 尚志市| 尖扎县| 潍坊市| 高邑县| 沅江市| 太湖县| 商南县| 马鞍山市| 都昌县| 绥江县| 清涧县| 广平县| 安岳县| 大厂| 哈巴河县| 陈巴尔虎旗| 兰西县| 平塘县| 大庆市| 忻州市| 白水县| 青神县| 长泰县| 阿克陶县|