การควบคุมการสื่อสารใน VisualBasic และวิธีการออกแบบซอฟต์แวร์การสื่อสารภายใต้แพลตฟอร์ม Windows จะถูกรวมเข้ากับตัวอย่างเฉพาะเพื่อให้โปรแกรมการสื่อสารขั้นพื้นฐาน
ในปี 1992 บริษัท Crescent Software Inc. ได้ออกแบบการควบคุมการสื่อสารของผู้ใช้ mscomm.vbx สำหรับ VB โดยเฉพาะ โดยให้ความสามารถด้านการสื่อสารแบบอนุกรมสำหรับการส่งและรับข้อมูลผ่านพอร์ตอนุกรม ไม่เพียงแต่รวมฟังก์ชันที่เสร็จสมบูรณ์โดยฟังก์ชันทั้ง 16 ฟังก์ชันของการสื่อสารแบบอนุกรมใน Windows API และได้พัฒนาคุณลักษณะของออบเจ็กต์เพิ่มเติมที่อำนวยความสะดวกในการออกแบบผู้ใช้เพื่อตอบสนองความต้องการของผู้ใช้และธุรกิจที่แตกต่างกัน ในปัจจุบัน วัสดุ VB ภายในประเทศจำนวนมากไม่ค่อยเกี่ยวข้องกับการแนะนำการควบคุมการสื่อสารนี้ บทความนี้จะแนะนำการควบคุมการสื่อสาร mscomm.vbx และวิธีการเขียนโปรแกรมโดยละเอียด และให้โปรแกรมการสื่อสารพื้นฐานตามตัวอย่างในที่ทำงาน
คำอธิบายการควบคุมการสื่อสาร 1mscomm.vbx
คุณสามารถเพิ่มการควบคุมการสื่อสาร mscomm.vbx ได้โดยตรงจากกล่องเครื่องมือ VB ลงในแบบฟอร์มฟอร์ม และสามารถใช้เพื่อการสื่อสารได้ หากไม่มีการควบคุมดังกล่าวในกล่องเครื่องมือ ให้ใช้ customcontrols ของเครื่องมือเพื่อเพิ่ม mscomm.vbx จากไดเร็กทอรีย่อยของระบบของ windows ไปยังกล่องเครื่องมือของ vb
1.1 วิธีการสื่อสาร
mscomm.vbx มี 2 วิธีที่แตกต่างกันในการจัดการและแก้ไขปัญหาการพัฒนาและการออกแบบของซอฟต์แวร์การสื่อสารต่างๆ
1. ขับเคลื่อนด้วยเหตุการณ์ คล้ายกับฟังก์ชันเรียกกลับหน้าต่างเมื่อเขียนซอฟต์แวร์ Windows ใน C/C และเป็นวิธีที่มีประสิทธิภาพในการจัดการกับปัญหา ในการทำงานจริง เรามักจะต้องจัดการกับเหตุการณ์ที่เกี่ยวข้องกันมากมายในการสื่อสาร ตัวอย่างเช่น เมื่อข้อมูลสายมาถึงปลายท้องถิ่นหรือสถานะของสาย cd และสายสัญญาณ rts เปลี่ยนแปลง เราจำเป็นต้องใช้เหตุการณ์ที่เกี่ยวข้องเพื่อ ติดตามและประมวลผล การควบคุมนี้ถูกใช้ เหตุการณ์ oncomm ถูกนำมาใช้ ซึ่งรวมถึงการตรวจจับและการจัดการข้อผิดพลาดในการสื่อสารและปัญหาอื่นๆ ค่า commevent จะส่งคืนเหตุการณ์การสื่อสารล่าสุดหรือรหัสตัวเลขข้อผิดพลาด ตัวอย่างข้อผิดพลาดและเหตุการณ์โดยละเอียดของการควบคุมการสื่อสารประกอบด้วย:
mscomm-er-break ได้รับ 1 สัญญาณเบรก
mscomm-er-cdtocd สัญญาณหมดเวลา
-
การเปลี่ยนแปลงสัญญาณ mscomm-ev-cdcd
-
2. วิธีการสอบถาม เป็นความรับผิดชอบของโปรแกรมเมอร์ในการอ่านค่าของเหตุการณ์และจัดการกับข้อผิดพลาดหรือเหตุการณ์ที่เกิดขึ้น โดยทั่วไปแล้วการออกแบบแอปพลิเคชันที่เรียบง่ายสามารถใช้แนวทางนี้ได้
1.2 คุณสมบัติของการควบคุมการสื่อสาร
กุญแจสำคัญในการใช้การควบคุมการสื่อสารเพื่อรวบรวมโปรแกรมการสื่อสารคือการทำความเข้าใจและตั้งค่าคุณสมบัติของการควบคุมการสื่อสารอย่างถูกต้อง mscomm.vbx มีคุณสมบัติ 27 รายการเกี่ยวกับการควบคุมการสื่อสาร เช่น:
สินค้า: ตั้งค่าหรือส่งคืนหมายเลขพอร์ตการสื่อสาร
การตั้งค่า: ตั้งค่าหรือส่งคืนรูปแบบการสื่อสารข้อมูลในรูปแบบสตริง: อัตรารับส่งข้อมูล พาริตี บิตข้อมูล และบิตหยุด
portopen: ตั้งค่าหรือคืนสถานะพอร์ตการสื่อสาร (รวมถึงการเปิดและปิดพอร์ตการสื่อสาร)
-
3. ตัวอย่าง
พื้นหลังการใช้งานของโปรแกรมนี้คือซอฟต์แวร์ระบบตรวจสอบอัตโนมัติของการตกตะกอนไฟฟ้าสถิต dcc95 ซึ่งแก้ปัญหาการสื่อสารระหว่างคอมพิวเตอร์อุตสาหกรรม 1 ชิ้น (สถานีหลัก) และไมโครคอนโทรลเลอร์ 32 ตัว (สถานีย่อย) โครงสร้างเครือข่ายบัสระหว่างสถานีหลักและสถานีย่อยใช้มาตรฐานการสื่อสาร rs-485 และดำเนินการการสื่อสารข้อมูลในลักษณะคำถามและคำตอบ เนื่องจากสถานีย่อย 32 สถานีส่งคำสั่งการสื่อสาร (คำสั่งดาวน์ลิงก์) ไปยังสถานีหลัก สถานีหลักยังคงส่งคำสั่งดาวน์ลิงก์ต่อไป หลังจากได้รับคำสั่งตอบกลับที่เกี่ยวข้อง (คำสั่งอัปลิงก์) ที่ส่งกลับโดยสถานีย่อย ตามข้อกำหนดของฟังก์ชันระบบ สถานีหลักจำเป็นต้องส่งคำสั่งสองประเภท: (1) คำสั่งแบบซิงโครนัส ซึ่งถูกทริกเกอร์โดยตัวจับเวลาและถูกส่งหนึ่งครั้งในทุกรอบ ls; (2) คำสั่งแบบเป็นระยะ ซึ่งถูกทริกเกอร์โดย โอเปอเรเตอร์ เกิดจากการเลื่อนปุ่มคำสั่งที่เกี่ยวข้องซึ่งจะถูกส่งเป็นระยะๆ ซอฟต์แวร์ระบบตรวจสอบอัตโนมัติได้รับการติดตั้งบนสถานีหลัก และโปรแกรมการสื่อสารได้รับการติดตั้งบนสถานีหลักด้วย โดยเป็นส่วนหนึ่งของซอฟต์แวร์ระบบตรวจสอบอัตโนมัติ
บทความนี้แสดงรายการโปรแกรมสาธิตพื้นฐานสำหรับการทดสอบเมื่อทำการดีบักโปรแกรมการสื่อสารเท่านั้น ในระหว่างการทดสอบ พีซีเครื่องหนึ่งถูกใช้เป็นสถานีหลัก และพีซีอีกเครื่องหนึ่งจำลองการทำงานของสถานีย่อย 32 เครื่อง พีซีทั้งสองเครื่องใช้การสื่อสารผ่านพอร์ตอนุกรม rs232c เพิ่มการควบคุมการสื่อสาร 1 ชุด การควบคุมตัวจับเวลา 2 ปุ่ม และปุ่มควบคุม 1 ปุ่มให้กับแบบฟอร์มโปรแกรมสาธิตการสื่อสาร (แบบฟอร์ม) ของสถานีหลัก การควบคุมการสื่อสาร (mscomm1) ใช้เพื่อเข้าถึงพอร์ตอนุกรม ส่งและรับข้อมูล การควบคุมตัวจับเวลาเป็นระยะ ( คาบ) ใช้เพื่อควบคุมสถานีหลักเพื่อส่งคำสั่งตามคาบไปยังแต่ละสถานีย่อยทุกๆ วินาที ปุ่มควบคุมคำสั่ง (คำสั่งที่ไม่ใช่คาบ) และการควบคุมตัวจับเวลาที่ไม่ใช่คาบ (ไม่ใช่คาบ) ใช้เพื่อส่งคาสั่งที่ไม่ใช่คาบ การส่งข้อมูลใช้การสื่อสารที่ขับเคลื่อนด้วยเหตุการณ์ แอ็ตทริบิวต์ rtreshlod ถูกตั้งค่าตามคำสั่งการส่งที่แตกต่างกัน ดังนั้นจึงทำให้เหตุการณ์ oncomm ได้รับข้อมูล
2.1 ขั้นตอนการเริ่มต้นสำหรับการควบคุมแต่ละรายการในรูปแบบ
ตั้งค่าพารามิเตอร์การทำงานของพอร์ตอนุกรมการสื่อสาร ตั้งค่าช่วงเวลาขัดจังหวะของตัวจับเวลาเป็นระยะเป็น ls และช่วงเวลาขัดจังหวะของตัวจับเวลาที่ไม่ใช่เป็นระยะเป็น 0.5 วินาที
โหลดแบบฟอร์มย่อย ()
mscomm1.commport=2'เลือกพอร์ตอนุกรม com2
mscomm1.settings="9600,n8,1"'อัตราการรับส่งข้อมูล 9600, ไม่มีพาริตีบิต, 8 บิตข้อมูล และ 1 บิตหยุด
mscomm1.inputlen=0'input จะอ่านเนื้อหาทั้งหมดของบัฟเฟอร์การรับ
mscomm1.inbuffersize=1024'ตั้งค่าความยาวไบต์ของบัฟเฟอร์การรับ
mscomm1.portopen=true'เปิดพอร์ตการสื่อสาร
mscomm1.inbuffercount=0'ล้างข้อมูลบัฟเฟอร์การส่ง
mscomm1.outbuffercount=0'ล้างข้อมูลบัฟเฟอร์การรับ
periodic.inteval=100'ตั้งค่าช่วงเวลา ls เพื่อให้คำสั่ง telemetry ถูกส่งทุกๆ ls
nontermic.inteval=500'ตั้งค่าช่วงเวลา 0.5 วินาที และสอบถามว่าปุ่มคำสั่งถูกเปิดใช้งานหรือไม่ เพื่อพิจารณาว่าจะส่งคำสั่งเป็นระยะหรือไม่
command-PRessed=false'ปุ่มคำสั่งไม่ทำงาน
ระหว่าง-งวด=false'การส่งข้อมูลคำสั่งตามระยะเวลายังไม่ได้เริ่มต้น
ระหว่าง-non periodic=false'non-เป็นระยะการส่งข้อมูลคำสั่งยังไม่ได้เริ่มต้น
จบซับ
2.2 โปรแกรมส่งคำสั่งเป็นระยะ
ตามสถานะของปุ่มคำสั่งและสถานะการส่งข้อมูลคำสั่งเป็นระยะ คำสั่งแบบเป็นระยะจะถูกส่งไปในโปรแกรมขัดจังหวะของตัวจับเวลาที่ไม่ใช่เป็นระยะ
คำสั่งย่อยที่ไม่ใช่ระยะเวลาคลิก ()
command-pressed=true'command การเปิดใช้งานปุ่ม
จบซับ
จับเวลาแบบไม่ต่อเนื่อง ()
ifduring-termic=trueorcommand-pressed=false
thenexitsub' หากการส่งข้อมูลคำสั่งเป็นระยะยังไม่สิ้นสุดหรือปุ่มคำสั่งถูกเปิดใช้งาน ให้ออกจากโปรแกรมที่ส่งคำสั่งเป็นระยะ
command-pressed=false'Command ปุ่มกลับสู่สถานะไม่ได้ใช้งาน
callenddata (คำสั่งที่ไม่ใช่งวด) 'ส่งคำสั่งที่ไม่ใช่เป็นระยะ
mscomm1.rthreshold=r-nontermic-byte'หลังจากส่งคำสั่งเป็นระยะ ให้ตั้งค่าแอตทริบิวต์ rthreshold เพื่อให้สถานีหลักทริกเกอร์เหตุการณ์ oncomm หลังจากได้รับจำนวนไบต์ที่ตั้งไว้
จบซับ
2.3โปรแกรมจับเวลาแบบคาบ
ส่งคำสั่งเป็นระยะในโปรแกรมขัดจังหวะของตัวจับเวลาเป็นระยะ:
ช่วงย่อยจับเวลา ()
ifduring-nontermic=truethenexitsub'หากการส่งข้อมูลคำสั่งแบบไม่เป็นระยะยังไม่สิ้นสุด ให้ออกจากโปรแกรมเพื่อส่งคำสั่งเป็นระยะ
ในระหว่างช่วงระยะเวลา=true' ตั้งค่าสถานะการส่งข้อมูลคำสั่งเป็นระยะเป็นกำลังดำเนินการ
callenddata(คำสั่งเป็นระยะ) 'ส่งคำสั่งเป็นระยะ
mscomm1.rthreshold=r-termic-byte'หลังจากส่งคำสั่งเป็นระยะ สถานีหลักจะได้รับไบต์ r-remot-edata-byte ซึ่งสามารถทริกเกอร์เหตุการณ์ oncomm
จบซับ
2.4โปรแกรมกิจกรรมออนคอม
ตามค่าการตั้งค่าแอ็ตทริบิวต์ rthreshold เมื่อได้รับอักขระไบต์ที่สอดคล้องกันในบัฟเฟอร์การรับ เหตุการณ์ oncomm จะถูกทริกเกอร์ และข้อมูลจะได้รับในโปรแกรมขัดจังหวะ
submscomm1-oncomm()
selectcasemscomm1.commevent'ที่นี่คุณสามารถแทรกโค้ดเพื่อจัดการกับข้อผิดพลาดหรือเหตุการณ์ต่างๆ
casemscomm-ev-รับ
รับสตริง$=mscomm1.input
selectcasemscomm1.rthreshold
caser-คาบ-byte'response ข้อมูลของคำสั่งเป็นระยะ
calldisposedata(คำสั่งเป็นระยะ)'ประมวลผลข้อมูลที่ได้รับ
ในระหว่างช่วงเวลา=เท็จ' ตั้งค่าสถานะการส่งข้อมูลคำสั่งเป็นระยะเพื่อสิ้นสุด
ข้อมูลการตอบสนองคำสั่ง caser-nontermic-byte'non-เป็นระยะ
calldisposedata (คำสั่งที่ไม่ใช่ระยะเวลา) 'ประมวลผลข้อมูลที่ได้รับ
ในระหว่าง-nontermic=false' ตั้งค่าสถานะการส่งข้อมูลคำสั่งที่ไม่ใช่เป็นระยะเพื่อสิ้นสุด
สิ้นสุดการเลือก
สิ้นสุดการเลือก
จบซับ
ด้วยการอัปเกรดเวอร์ชัน vb อย่างต่อเนื่อง vb จะกลายเป็นเครื่องมือพัฒนาแอปพลิเคชันที่รวดเร็ว ใช้งานง่ายที่สุด และมีประสิทธิภาพ และเป็นหนึ่งในเครื่องมือตัวเลือกแรกสำหรับการพัฒนาซอฟต์แวร์แอปพลิเคชันไคลเอ็นต์/เซิร์ฟเวอร์ระดับองค์กร -