Asynchronous serial interface ระหว่าง PC กับ PIC16F877 ตอนที่ 2
คราวนี้เรามาดูส่วนของ PC ดูบ้างครับ ตัวผมเองถนัดใช้ Delphi ก็เอา Delphi เป็นตัวตั้งแล้วกันครับ ก่อนอื่นเราคงไม่มามัวนั่งเขียน serial เองแน่ครับ วิธีก็คือหา component ของ Delphi ที่เค้าแจกกันให้ฟรีๆ ใน web กันดีกว่าครับที่ผมถนัดใช้ก็คือ CPort ครับ สามารถ Download ได้ที่ http://www2.arnes.si/~sopecrni ที่ใช้ตัวนี้เพราะรู้สึกว่าเค้ามีการพัฒนาอย่างต่อเนื่องเสมอๆ ครับ
procedure TForm1.FormShow(Sender: TObject);
begin
ComPort1.ClearBuffer(true,true);
end;
ในขณะที่ Form เริ่มแสดงออกหน้าจอเราจะเริ่มด้วยการ clear ข้อมูลใน serial
buffer เสียก่อน
procedure TForm1.ComPort1RxChar(Sender: TObject; Count:
Integer);
var
MyBuf : array[1..2] of byte;
HiByte,LoByte: single;
Voltage: single;
begin
if Count >= 2 then begin
ComPort1.Read(MyBuf,2);
HiByte := (StrtoInt(InttoStr(MyBuf[1]))*256);
LoByte := (StrtoInt(InttoStr(MyBuf[2])));
Voltage := ((HiByte+LoByte)*5)/1024;
Label3.Caption := Formatfloat('0.00',Voltage);
end;
procedure TForm1.ComPort1RxChar จะกระทำเมื่อมีข้อมูลมาจาก serial
เราจะทำการดึงข้อมูลใน buffer แล้วทำการแปลงเป็น Volts โดยที่ข้อมูล 1 ชุดจะมีขนาด
2 byte แต่ข้อมูลจริงๆ จะมีขนาด 10 bit ดังนั้นเราจะทำการดึงข้อมุลทีละ 2 bytes
ใน buffer เพื่อแปลงเป็น Volt
จากนั้นก็ทำการ compile ได้เป็น .exe ครับเตรียมพร้อมสำหรับการ รับข้อมูล
เรียบร้อยแล้วครับสำหรับฝั่งคอมพิวเตอร์ คราวหน้าเราจะพูดถึงการเขียน program
ในฝั่ง PIC บ้างนะครับ