หน้าแรกคู่มือHMIจัดการข้อมูลใช้ Barcode Scanner กับหน้าจอ HMI แบบรวบรัด

บทที่ 8 จาก 11 ใน จัดการข้อมูล

HMIปานกลาง · Intermediate2 นาที

ใช้ 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

ชุดอุปกรณ์สำหรับบทความนี้

ราคาชุดอุปกรณ์

฿6,990

ภาพรวม

คลิปนี้เป็นฉบับรวบรัดของการใช้ปืน Barcode Scanner กับหน้าจอ HMI Samkoon (ในคลิปใช้ SK-070QS-G เสียบปืนสแกนเข้าที่หน้าจอ) Code ของ Script ทั้งสองตัว copy ได้จากบทความ การใช้งาน Barcode Scanner กับ HMI บน factonation.com (ค้นคำว่า Barcode ก็เจอ)

ขั้นตอนที่ 1: สร้างโปรเจกต์และ ASCII Display

  1. เปิด SKTool สร้าง New Project เลือกรุ่นหน้าจอและ Link Interface
  2. สร้างหน้าหลัก (Main)
  3. วาง 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 ทำงาน

  1. ที่ Init Script กด New แล้วเลือก Script Init
  2. ที่ Global Script กด New เลือก Script Scan ตั้ง Frequency 50 ms (ไม่ได้ติ๊ก By Bit Control)
  3. กด OK

ขั้นตอนที่ 5: ดาวน์โหลดและทดสอบ

ดาวน์โหลดโปรเจกต์ลงหน้าจอ (ในคลิปดาวน์โหลดผ่านสาย LAN) แล้วลองสแกน Barcode ข้อมูลจะขึ้นที่ ASCII Display ทันที

บทถัดไป

วิธีบันทึก Screenshot จากหน้าจอ HMI ลง USB Thumb Drive

2 นาทีเริ่มต้น · Beginner