POS 시스템에서 바코드 판독기를 연동하는 코딩 방법은 사용하는 바코드 리더기 종류와 인터페이스(USB, 시리얼 등)에 따라 조금씩 다릅니다.
가장 많이 쓰이는 **USB 바코드 스캐너**는 키보드 입력(Keyboard Wedge)처럼 동작해, 별도 드라이버 없이도 일반 텍스트 입력처럼 값을 받을 수 있습니다.
---
## 1. USB 바코드 스캐너 (키보드 인터페이스) 간단 C# 처리 예제 (WinForms)
```csharp
// 텍스트박스 하나 두고 포커스 유지하며 바코드 입력 받기
private void txtBarcode_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.Enter) // 엔터 키가 입력되면
{
string barcode = txtBarcode.Text.Trim();
ProcessBarcode(barcode);
txtBarcode.Clear();
e.Handled = true;
}
}
private void ProcessBarcode(string barcode)
{
// 바코드 문자열로 할 작업 작성 (예: 상품 검색, 등록 등)
MessageBox.Show($"스캔된 바코드: {barcode}");
}
```
* USB 스캐너가 텍스트를 자동 입력해주므로, 보통 `TextBox`를 포커스한 상태에서 입력을 받음.
* 엔터 키가 입력되면 바코드가 완성되었다고 판단.
---
## 2. 시리얼(Serial) 바코드 스캐너 연동 (COM 포트 사용 시)
```csharp
using Systehttp://m.IO.Ports;
SerialPort serialPort;
public void SetupSerialPort()
{
serialPort = new SerialPort("COM3", 9600, Parity.None, 8, StopBits.One);
serialPort.DataReceived += SerialPort_DataReceived;
serialPort.Open();
}
private void SerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
string barcode = serialPort.ReadLine().Trim();
// UI 스레드에서 처리해야 하므로 Invoke 사용
this.Invoke(new MethodInvoker(delegate {
ProcessBarcode(barcode);
}));
}
private void ProcessBarcode(string barcode)
{
MessageBox.Show($"스캔된 바코드: {barcode}");
}
```
* 시리얼 포트 이름, 보드레이트(baud rate) 등은 스캐너 설정에 맞춰야 합니다.
* `DataReceived` 이벤트로 바코드가 들어오는 즉시 처리 가능.
---
## 3. 요약
| 인터페이스 종류 | 특징 | 코딩 난이도 | 예제 처리 방식 |
| -------------- | ------------------- | ------ | --------------------- |
| USB 키보드 인터페이스 | 별도 드라이버 불필요, 텍스트 입력 | 쉬움 | TextBox에 입력 받아 엔터로 구분 |
| 시리얼(COM) 인터페이스 | 별도 포트 설정 필요 | 중간 | SerialPort 이벤트로 읽음 |
---
필요하다면 POS 시스템 내 바코드 데이터 연동 예제(재고 검색, 결제 연동 등)도 제공 가능합니다.
혹시 사용 중인 바코드 리더기 종류나 인터페이스 정보를 알려주시면 더 맞춤 코드를 드릴 수 있어요!