728x90
반응형
c#에서 시리얼포트 (RS232) 케이블을 이용해서 연결된 프린터에 인쇄를 할때 시리얼통신하는 방법입니다.
using System.IO;
using System.IO.Ports;
private void ComPortPrint(String printInfo)
{
serialPort1.PortName = "COM1"; //프린트 포트이름
serialPort1.BaudRate = "9600"; //통신속도 조정
serialPort1.DataBits = 8;
serialPort1.StopBits = StopBits.One;
serialPort1.Parity = Parity.None;
serialPort1.Open(); //포트오픈
serialPort1.Encoding = Encoding.Default;
serialPort1.WriteLine(printInfo); //인쇄 할 내용
serialPort1.WriteLine("\n\n\n"); //3칸 개행후 용지절단
serialPort1.WriteLine(gsChr(0x1B) + gsChr(0x69)); //용지절단
serialPort1.Close(); //포트닫기
}
우선 해당함수로 어디 포트에 연결됬는지와 통신속도를 적어줍니다.
그리고 그냥 쭉쭉 보시다가 sarialProt1.WriteLine보시면 이부분이 시리얼통신으로 명령어를 날리는 부분인데요
일반적으로 string형을 날리시면 그 문자 그대로 인쇄가됩니다.
다만 용지절단 같은 경우는 따로 16진수값을 string으로 하여 날리시면 그대로 인쇄가 아닌 명령어로 인식하여 작동합니다.
다음은 용지절단 함수인데 참고해보시기 바랍니다.
public static string gsChr(int V) //용지절단 커멘드 생성 (공통)
{
string R;
R = Convert.ToString((char)V);
return R;
}
그리고 포트를 검색해야하는 일도 있을수있습니다.
string[] PortNames = SerialPort.GetPortNames(); // 포트 검색.
string[] Baud = new string[] { "9600", "14400", "19200", "28800", "38400", "57600", "76800", "115200", "230400", "250000" };
foreach (string portnumber in PortNames)
{
Port_Combox.Items.Add(portnumber); // 검색한 포트를 콤보박스에 입력.
}
for (int i = 0; i < Baud.Length; i++)
{
Baud_Combox.Items.Add(Baud[i]); //통신속도 셋팅
}
콤보박스에 검색된 포트와 통신속도를 추가해줍니다.
winForm에 콤보박스를 추가하시고 나서 이름을 위와 같이 바꾸신 후에 테스트 해보시기 바랍니다.
728x90
반응형
'C#' 카테고리의 다른 글
C# 영수증 프린터 BIXOLON/SAM4S 브랜드에서 깨짐 현상 (0) | 2021.04.14 |
---|---|
C# 멀티스레드로 다른 작업중에도 별도 작업하기 (0) | 2020.10.15 |
C# 큐브리드 데이터베이스 연동하기. (0) | 2020.09.24 |
댓글