ใช้ Barcode Scanner กับหน้าจอ HMI แบบรวบรัด
ต่อปืน Barcode Scanner เข้ากับหน้าจอ HMI Samkoon แล้วแสดงข้อมูลที่สแกนได้บน ASCII Display ที่ LW10000 ด้วย Script 2 ตัว คือ Init (เปิดใช้งาน Scanner) และ Scan (คัดลอกข้อมูลที่อ่านได้) ใน SKTool
สร้าง ASCII Display ที่ LW10000 แล้วเขียน Script 2 ตัว — Init เปิด Scanner ด้วย LW60997 = 1 ตั้งเป็น Init Script ส่วน Scan คัดลอกข้อมูลจาก LW61000 ไปที่ LW10000 เมื่อ LB60147 เป็น 1 ตั้งเป็น Global Script ทุก 50 ms จากนั้นดาวน์โหลดลงหน้าจอแล้วสแกนได้เลย
อัพเดทล่าสุด: 26 ตุลาคม 2569
ภาพรวม
คลิปนี้เป็นฉบับรวบรัดของการใช้ปืน Barcode Scanner กับหน้าจอ HMI Samkoon (ในคลิปใช้ SK-070QS-G เสียบปืนสแกนเข้าที่หน้าจอ) Code ของ Script ทั้งสองตัว copy ได้จากบทความ การใช้งาน Barcode Scanner กับ HMI บน factonation.com (ค้นคำว่า Barcode ก็เจอ)
ขั้นตอนที่ 1: สร้างโปรเจกต์และ ASCII Display
- เปิด SKTool สร้าง New Project เลือกรุ่นหน้าจอและ Link Interface
- สร้างหน้าหลัก (Main)
- วาง ASCII Display บนหน้าจอ ตั้ง Monitor Address = LW10000 ซึ่งเป็นตำแหน่งที่จะแสดงข้อมูล Barcode
ขั้นตอนที่ 2: Script สำหรับ Initialize Scanner
เปิด Script Editor กด New แล้วสร้าง Script ชื่อ Init วาง Code นี้แล้วกด Compile
#include "MacroInit.h"
//#include "subFun1.c" //Example
// Barcode Scanner Init Script
void Macro_main(IN *p)
{
MarcoInit
#define UseScanner 60997
LocalWord[UseScanner] = 1;
}
Script นี้เขียน 1 ลงที่ LW60997 เพื่อเปิดใช้งาน Scanner
ขั้นตอนที่ 3: Script สำหรับอ่านค่าและแสดงผล
สร้างอีก Script ชื่อ Scan วาง Code นี้ อ่านคร่าวๆ ให้เข้าใจแล้วกด Compile (ในคลิปขึ้น Compile success)
#include "MacroInit.h"
//#include "subFun1.c" //Example
// การกำหนด Reserve Register
#define DownloadRecipeTriggerBit 60100
#define ScanFinishFlag 60147
#define ScanDataLength 60999
#define ScanDataStart 61000
// การกำหนดค่าสูงสุด
#define MaxDataLength 50
#define NumberOfBarcodes 10
// ตำแหน่งเก็บข้อมูลที่กำหนดเอง
#define SaveDataStart 10000
void Macro_main(IN *p)
{
MarcoInit
// ตรวจสอบว่าการสแกนเสร็จสิ้นแล้ว
if(LocalBit[ScanFinishFlag] == 1)
{
// Copy ข้อมูลที่อ่านได้ไปยังตำแหน่งที่เรากำหนด
int i;
for(i = 0; i < LocalWord[ScanDataLength]; i++)
{
LocalWord[SaveDataStart + i] = LocalWord[ScanDataStart + i];
}
// รีเซ็ต Flag เพื่อเตรียมสำหรับการสแกนครั้งต่อไป
LocalBit[ScanFinishFlag] = 0;
}
}
SaveDataStart 10000คือ LW10000 ตำแหน่งเดียวกับ ASCII Display ในขั้นตอนที่ 1- เมื่อสแกนเสร็จ LB60147 เป็น 1 Script จะคัดลอกข้อมูลยาวเท่ากับ LW60999 จาก LW61000 มาที่ LW10000 แล้วรีเซ็ต Flag
ขั้นตอนที่ 4: กำหนดให้ Script ทำงาน
- ที่ Init Script กด New แล้วเลือก Script Init
- ที่ Global Script กด New เลือก Script Scan ตั้ง Frequency 50 ms (ไม่ได้ติ๊ก By Bit Control)
- กด OK
ขั้นตอนที่ 5: ดาวน์โหลดและทดสอบ
ดาวน์โหลดโปรเจกต์ลงหน้าจอ (ในคลิปดาวน์โหลดผ่านสาย LAN) แล้วลองสแกน Barcode ข้อมูลจะขึ้นที่ ASCII Display ทันที
บทถัดไป
วิธีบันทึก Screenshot จากหน้าจอ HMI ลง USB Thumb Drive
มีคำถาม? ติดต่อทีมงาน
