ปล่อยเวลาผ่านไปเนิ่นนานกว่าจะได้กลับมาเขียนเรื่องนี้
ต่อไปมาดู Properties แต่ละตัวกันก่อน
เอาที่สำคัญ ๆ นะครับ มี 3 ตัวที่จะเอาไว้แสดงค่าต่าง ๆ ตามที่ได้ออกแบบไว้แต่ต้น
Vehicle Scale Systems (โปรแกรมชั่งน้ำหนักรถยนต์) ตอนที่ 1
Author: Samrid Somboon
การใช้ Delphi รับค่าน้ำหนักจาก Serial port บ้างก็เรียก Comport
ที่กลับมาเขียน ก็เพื่อเก็บไว้ให้ตัวเองได้กลับมาอ่าน
ในตอนที่ต้องกลับมาแก้ไขโปรแกรมประเภทนี้อีก
เรียกได้ว่า เอาไว้เตือนความจำตัวเอง หรือคู่ทือของตัวเองก็แล้ว
ขั้นตอนต่าง ๆ มีอะไรบ้างเมื่อต้องการเขียนโปรแกรมติดต่อไปยังอุปกรณ์ต่อพ่วง
อย่างเช่น พอร์ตอุนกรม หรือ Serial port
ในตอนที่ต้องกลับมาแก้ไขโปรแกรมประเภทนี้อีก
เรียกได้ว่า เอาไว้เตือนความจำตัวเอง หรือคู่ทือของตัวเองก็แล้ว
ขั้นตอนต่าง ๆ มีอะไรบ้างเมื่อต้องการเขียนโปรแกรมติดต่อไปยังอุปกรณ์ต่อพ่วง
อย่างเช่น พอร์ตอุนกรม หรือ Serial port
..เพื่อไม่เป็นการเสียเวลา เรามาเริ่มกันเลย
อันดับแรก ออกแบบหน้าจอ กันก่อน (เรานักวาดฝัน ปั้นจินตการให้กลายเป็นซอฟต์แวร์)
วาดมือ คงพอมองเห็นภาพว่าเรากำลังจะรับค่า แล้วให้มันมาแสดงที่ Form
Mock-up design |
วาดมือ คงพอมองเห็นภาพว่าเรากำลังจะรับค่า แล้วให้มันมาแสดงที่ Form
เมื่อค่ามีการเปลี่ยนแปลง
ให้แสดงค่า ที่รับมาได้ บน CompTerminal
บน Memo
สุดท้ายให้มันแสดง บน Panel
แสดงทั้งสามจุดไปเลยพร้อม ๆ กัน
แสดงทั้งสามจุดไปเลยพร้อม ๆ กัน
แต่ว่า จะเอาข้อมูลจากเครื่องชั่งจริง ๆ ได้ที่ไหน ในเมื่อกำลังออกแบบและเขียนโปรแกรม
ที่ Office หรือ ที่บ้าน
ไม่เป็นปัญหา เราจะจำลองทุกอย่างที่คอมเครื่องนี้ทั้งหมด
โดยโปรแกรมต่าง ๆ ที่ต้องใช้ มีดังต่อไปนี้
1. Virtual Serial Port Driver
2. Com port Data Emulator & Traffic generator
3. Delphi 7
4. Component TComport
5. Text data from Kubota Weighting Control Indicator (อันนี้ไป Capture จากอุปกรณ์จริง ๆ มา
โชคดีที่ทำงานเปิดโอกาสให้เขียนโปรแกรมเพื่อไป Capture Data ที่ส่งมาที่ Serial port)
ดูตัวอย่าง Demo การ Capture
โชคดีที่ทำงานเปิดโอกาสให้เขียนโปรแกรมเพื่อไป Capture Data ที่ส่งมาที่ Serial port)
ดูตัวอย่าง Demo การ Capture
เมื่อจัดเตรียมเครื่องมือต่าง ๆ ครบแล้ว
กลับมาที่ Delphi โดยเลือกใช้ Delphi 7 ตัวเก่ง เจ้าประจำ
เราจะมาวาดหน้าจอโปรแกรม ให้ได้ตาม Mock-up ลองดูภาพประกอบ
เราจะมาวาดหน้าจอโปรแกรม ให้ได้ตาม Mock-up ลองดูภาพประกอบ
Delphi and TComport |
วาง Component ต่าง ๆ ตาม Mock-up ที่ได้วาด ๆ ด้วยมือไว้ เสร็จเรียบร้อยแล้ว...(เร็วไปมั้ย)
ต่อไปมาดู Properties แต่ละตัวกันก่อน
เอาที่สำคัญ ๆ นะครับ มี 3 ตัวที่จะเอาไว้แสดงค่าต่าง ๆ ตามที่ได้ออกแบบไว้แต่ต้น
ComTerminal1
ตัวนี้ กำหนด Properties 1 ตัว โดยให้ Comport มองไปยัง Comport1 ดังภาพ
Delphi ComTerminal1 |
Comport1 ตั้งค่าต่าง ๆ ดังภาพประกอบ
Double click ที่ต้อง Component Comport1
และกำหนด Parameter ต่าง ๆ ดังภาพ โดยให้กำหนด Port = COM3*)
ส่วน Parameter ตัวอื่น ๆ ตั้งตามภาพเลย
และกำหนด Parameter ต่าง ๆ ดังภาพ โดยให้กำหนด Port = COM3*)
ส่วน Parameter ตัวอื่น ๆ ตั้งตามภาพเลย
Comport1 Properties |
ตัวสุดท้าย Component ComDataPacket1 กำหนดแค่จุดเดียวตามภาพคือ
กำหนด Comport ให้มองไปยัง Comport1ComDataPacket1 Properties |
ต่อไปมาตั้งค่า Tool ที่ต้องใช้เพื่อจำลองสถานการณ์ การรับค่าจากเครื่องชั่ง
ตัวแรกโปรแกรม Virtual Serial Port Driver.
โดยให้กดปุ่ม Add pair (โดยผมตั้งค่า *COM2 สำหรับ Data Emulator, COM3* สำหรับ Delphi)
โดยให้กดปุ่ม Add pair (โดยผมตั้งค่า *COM2 สำหรับ Data Emulator, COM3* สำหรับ Delphi)
Create virtual ports |
เครื่องมือตัวที่ 2 COM Port Data Emulator...
ตัวนี้เอาไว้ส่งค่าไปยัง Port ได้จำลองไว้ในขั้นตอนที่ผ่านมา ให้ตั้งค่า ต่าง ๆ ตามภาพตัวอย่าง
คือกำหนด Port = 2 และ parameter 9600,7,N,1 None
และที่ Tab Data source (ภาพถัดไป กำหนดค่าต่าง ๆ ดังตัวอย่าง)
ตัวนี้เอาไว้ส่งค่าไปยัง Port ได้จำลองไว้ในขั้นตอนที่ผ่านมา ให้ตั้งค่า ต่าง ๆ ตามภาพตัวอย่าง
คือกำหนด Port = 2 และ parameter 9600,7,N,1 None
และที่ Tab Data source (ภาพถัดไป กำหนดค่าต่าง ๆ ดังตัวอย่าง)
ใช้ Port COM2 จาก Virtual Serial Port Tools |
COM Port Data Emulator Setting |
ขั้นตอนเหมือนจะเยอะ ต่อไปก็ลง Code แล้ว
ซึ่ง Code ไม่กี่บรรทัดก็ได้ค่าของน้ำหนัก
เข้ามาวิ่งให้วุ่นบนหน้าจอโปรแกรมที่เราสร้างขึ้นแล้วครับ
โดย Demo นี้เขียน Code แค่ 3 procedure คือ
procedure ComPort1AfterClose(Sender: TObject);
ตามมาดู Delphi code กันเลย...ด้านล่าง
เข้ามาวิ่งให้วุ่นบนหน้าจอโปรแกรมที่เราสร้างขึ้นแล้วครับ
โดย Demo นี้เขียน Code แค่ 3 procedure คือ
procedure ComPort1AfterClose(Sender: TObject);
procedure ComPort1AfterOpen(Sender: TObject);
procedure ComDataPacket1Packet(Sender: TObject; const Str: String);
ตามมาดู Delphi code กันเลย...ด้านล่าง
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, CPort, CPortCtl, ExtCtrls;
type
TForm1 = class(TForm)
Panel1: TPanel;
ComTerminal1: TComTerminal;
ComPort1: TComPort;
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
Panel2: TPanel;
Memo1: TMemo;
Panel3: TPanel;
ComDataPacket1: TComDataPacket;
procedure Button1Click(Sender: TObject);
procedure ComPort1AfterClose(Sender: TObject);
procedure ComPort1AfterOpen(Sender: TObject);
procedure ComDataPacket1Packet(Sender: TObject; const Str: String);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
case ComPort1.Connected of
true: (Sender as TButton).Caption:= '&Open port';
false: (Sender as TButton).Caption:= '&Close port';
end;
ComPort1.Connected := not ComPort1.Connected;
end;
procedure TForm1.ComPort1AfterClose(Sender: TObject);
begin
Label2.Caption:='Port is close';
end;
procedure TForm1.ComPort1AfterOpen(Sender: TObject);
begin
Label2.Caption:='Port is open';
end;
procedure TForm1.ComDataPacket1Packet(Sender: TObject; const Str: String);
begin
Panel3.Caption:= Str;
Memo1.lines.add(Str);
if Memo1.Lines.count>150 then
Memo1.clear;
end;
end.
หลังจากลง Code เสร็จแล้ว
ก็ Start COM Port Data Emulator ครับ
Data Emulator. |
ลองเทส Run โปรแกรม หากไม่ Error ก็ให้กดปุ่ม Open Port โปรแกรมก็จะแสดงข้อมูล
น้ำหนักวิ่งกันให้วุ่นเลยใช่มั้ย บนจอ หากไม่เห็นภาพ เลื่อนลงไปดูภาพเคลื่อนไหว ในภาพสุดท้ายครับ
น้ำหนักวิ่งกันให้วุ่นเลยใช่มั้ย บนจอ หากไม่เห็นภาพ เลื่อนลงไปดูภาพเคลื่อนไหว ในภาพสุดท้ายครับ
Delphi TComport Weight |
Delphi ติดต่อเครื่องชั่ง Comport |
Vehicle Scale Systems (โปรแกรมชั่งน้ำหนักรถยนต์) ตอนที่ 1
Comments
Post a Comment