반응형
게임 매크로 만들기#1 시리얼 통신
1. 시리얼 통신을 위한 인터페이스
아래와 같이 그리드 박스를 하나 만들었다.
-. 윗줄은 시리얼로 보낼 메시지, 메시지를 보내는 버튼, 연결 대상을 고르는 ComPort 콤보박스, Comport에 연결하는 버튼
-. 아랫줄은 시리얼 연결을 표시해주는 사항들
2. Serial 연결
if (!_serialPort.IsOpen) //시리얼포트가 열려 있지 않으면
{
//The default is 8 data bits, no parity, one stop bit.
_serialPort.PortName = CB_ComPortList.Text;
_serialPort.BaudRate = 9600; //아두이노 기본설정
_serialPort.DataBits = 8; //아두이노 기본설정
_serialPort.StopBits = StopBits.One; //아두이노 기본설정
_serialPort.Parity = Parity.None;
_serialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler); //시리얼 수신 이벤트 처리
_serialPort.Open(); //시리얼포트 열기
CB_ComPortList.IsDropDownOpen = false; //COM포트설정 콤보박스 비활성화
}
else //시리얼포트가 열려 있으면
{
_serialPort.Close();
}
3. Serial 보내기 (매우간단)
_serialPort.WriteLine(TB_SerialSend.Text); //textbox에 있는 string을 보낸다.
##. 전체 코드
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.IO.Ports;
using System.Diagnostics;
namespace autoControl
{
/// <summary>
/// MainWindow.xaml에 대한 상호 작용 논리
/// </summary>
public partial class MainWindow : Window
{
static SerialPort _serialPort;
public MainWindow()
{
InitializeComponent();
CB_ComPortList.ItemsSource = SerialPort.GetPortNames(); //연결 가능한 시리얼 포트 목록 불러오기
_serialPort = new SerialPort();
}
private void SerialConnectBtn_Click(object sender, RoutedEventArgs e)
{
SerialConnect(sender, e);
}
private void SerialConnect(object sender, RoutedEventArgs e) //시리얼 연결 처리
{
if (!_serialPort.IsOpen) //시리얼포트가 열려 있지 않으면
{
//The default is 8 data bits, no parity, one stop bit.
_serialPort.PortName = CB_ComPortList.Text;
_serialPort.BaudRate = 9600; //아두이노 기본설정
_serialPort.DataBits = 8; //아두이노 기본설정
_serialPort.StopBits = StopBits.One; //아두이노 기본설정
_serialPort.Parity = Parity.None;
_serialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler); //시리얼 수신 이벤트 처리
_serialPort.Open(); //시리얼포트 열기
CB_ComPortList.IsDropDownOpen = false; //COM포트설정 콤보박스 비활성화
}
else //시리얼포트가 열려 있으면
{
_serialPort.Close();
}
}
private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
SerialPort sp = (SerialPort)sender;
string indata = sp.ReadExisting();
Debug.WriteLine("Data Received:");
Debug.Write(indata);
}
private void Btn_SerialSend_Click(object sender, RoutedEventArgs e)
{
if(!_serialPort.IsOpen)
{
SerialConnect(sender, e); //혹시 연결 안되어 있으면 연결하고 시작
}
_serialPort.WriteLine(TB_SerialSend.Text); //textbox에 있는 string을 보낸다.
}
}
}
728x90
반응형
'C#' 카테고리의 다른 글
user32.dll - 프로세스 목록 (process list, window titles) 가져오기 (0) | 2020.10.21 |
---|---|
C#에서 C++ 사용하기 - CPP in CSharp (2) | 2020.10.18 |
[C#] 매크로 만들기 ver.2 - 마우스 클릭 매크로 (0) | 2020.10.15 |
[C#] user32 클릭으로 익스플로러 alert 닫기 + 쓰레드 (0) | 2020.10.14 |
[C#] 파일 읽기 (0) | 2020.10.05 |
최근댓글