일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- OpenCVSharp 2.4.10
- ALT-8RSD-12V 프로토콜
- 유니티
- RS232통신
- RS232 시리얼 통신 결과물
- ALT-8RSD-12 통신 프로토콜
- c# opencv
- 시리얼 통신
- C#
- C# Opencv 영상
- ALT-8RSD-12V
- 카메라 추적
- 광량 제어
- RS232
- Scripting API
- RS232 통신
- vscode
- 0~255
- AssetStore
- 3D
- ALT-8RSD-12
- 에셋스토어
- Unity
- Windows Forms
- PictureBoxIpl
- 더하기사이클
- template matching
- RS232 시리얼통신
- 18.04
- 흐림화
- Today
- Total
앉아있는 프래그래머
C# 아두이노 RS232 시리얼통신 아두이노값을 C#에서 받기 본문
아두이노도 ALT-8RSD와 같은 Serialport 연결을 사용하면 된다.
다른점은 빨간색으로 표시해뒀으니 비교
아두이노 코드
//====================================================================================================
const int buttonPin1 = 2;
const int chattering = 1000;
void setup() {
Serial.begin(9600);
pinMode(buttonPin1, INPUT);
}
void loop() {
if (digitalRead(buttonPin1) == LOW) {
Serial.println("1");
delay(chattering);
}
}
코드에대해서 간단히 설명하자면 아두이노 DigitalPin 2번에 스위치를 만들어주고 Serial.begin(9600) 9600bps로 C#과 서로 동일하게 만들어준다. 그리고 button을 눌렸을때 digitalRead 말그대로 데이터를 읽는다. 만약 그것이 LOW(눌려졌다)경우
Serial.println("1"); 값을 시리얼통신으로 전달..
Serial.println("1"); -> 밑에 C#코드 Adruino_DataReceived 로 전달
참고 딜레이를 만든 이유
채터링
전자 회로 내의 스위치 접점이 닫히거나 열리는 순간에 기계적인 진동에 의해
매우 짧은 시간안에 스위치가 붙었다가 떨어지는 것을 반복하는 현상
이 반복 현상으로 인해서 나는 한번 눌렸어도 무수한 데이터가 보내 질수가 있다.
그래서 값에 delay를 주어 Chattering방지를 만들어 준것이다.
C# 코드
//====================================================================================================
using.System.IO.Ports;
class serialport{
SerialPort port = new SerialPort();
//=======================================================================================================
private void button_Click(object sender, EventArgs e)
{
if(port.IsOpen == false){
port = new SerialPort("COM4", 9600);
port.Encoding = Encoding.Default;
port.Parity = Parity.None;
port.DataBits = 8;
port.StopBits = StopBits.One;
port.DataReceived += new SerialDataReceivedEventHandler(Adruino_DataReceived);
port.Open();
}else{
port.Close();
}
//=======================================================================================================
private void Adruino_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
SerialPort myport = (SerialPort)sender; //sender는 보내는 사람으로서 아두이노의 내용이라고 생각하면 된다.
string s = myport.ReadExisting(); //s 에 myport의 내용을 넣는다.
값 처리 예시
int n =Convert.ToInt16(s);
switch(n){
case 2: textBox1.Text = "1이 전송되었습니다."; break;
case 2: textBox1.Text = "2가 전송되었습니다."; break;
case 2: textBox1.Text = "3이 전송되었습니다."; break;
}
}
}
'프로그래밍 > C#,ALT-8RSD-12V - RS232 시리얼 통신' 카테고리의 다른 글
C# 이랑 ALT-8RSD 시리얼 통신 결과물 (2) | 2018.07.18 |
---|---|
C# RS232-시리얼통신 코드 2 - 프로토콜(2) ALT-8RSD (1) | 2018.07.18 |
C# RS232-시리얼통신 코드 2 - 프로토콜(1) ALT-8RSD (1) | 2018.07.18 |
C# RS232-시리얼통신 코드 (0) | 2018.07.18 |
ALT-8RSD-12V & LED LIGHT GUIDE(ONI201303G-186) (0) | 2018.07.18 |