일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- DataGridView 직접 입력
- 1883
- 공인IP
- listener 1883
- 서버동기화
- datagridview 직접입력
- html #select #option #multiple
- map이 undefined가 뜰 때
- setInterval 정지
- AntDesign
- mosquitto.conf
- Replication
- c# datagridview 데이터 넣기
- pm2 확인
- setInterval 중지
- 데이터테이블 데이터 넣기
- pm2
- transfer
- invalid data
- setInterval clear
- mosquitto
- DatePicker
- mySQL_Replication
- allow_anonymouse
- pm2 상태 확인
- timepicker
- 맥 어드레스
- setInterval 외부 정지
- pm2 시작
- pm2 설치
- Today
- Total
개발 노트
기기 통신 방식 본문
[c# 시리얼 통신 클래스 만들기]
시리얼 포트 열기
private void buttonserialPort_Click(object sender, EventArgs e)
{
// 1. SerialPort 클래스 객체 생성 (COM5 포트를 사용)
SerialPort sp = new SerialPort("COM5");
// 2. 시리얼포트 오픈
sp.Open();
// 3. 시리얼포트에서 한 라인 읽기
string data = sp.ReadLine();
Console.WriteLine(data);
// 4. 시리얼포트 닫기
sp.Close();
Console.WriteLine("Press Enter to Quit");
Console.ReadLine();
}
시리얼포트 쓰기
private void buttonSerialWrite_Click(object sender, EventArgs e)
{
// 1. SerialPort 클래스 객체 생성 (COM6 포트를 사용)
SerialPort sp = new SerialPort("COM6");
// 2. SerialPort 포트 셋팅 설정
sp.PortName = "COM6";
sp.BaudRate = 9600;
sp.DataBits = 8;
sp.Parity = Parity.None;
sp.StopBits = StopBits.One;
// 2. 시리얼포트 오픈
sp.Open();
// 3. 시리얼포트에서 한 라인 쓰기
sp.WriteLine("Hello World");
// 4. 시리얼포트 닫기
sp.Close();
}
시리얼포트 비동기처리
private void button1_Click(object sender, EventArgs e)
{
string portName = "COM6";
// 시리얼포트 열기
SerialPort sp = new SerialPort(portName);
sp.Open();
// 읽기 작업쓰레드: Read from serial port
var cancel = new CancellationTokenSource();
var readTask = Task.Factory.StartNew(() =>
{
while (!cancel.IsCancellationRequested)
{
string readMsg = sp.ReadLine();
if (readMsg.ToLower() == "quit")
{
Environment.Exit(0);
}
Console.WriteLine(readMsg);
}
}, cancel.Token);
// 메인쓰레드: Write to serial port
while (true)
{
string sendMsg = Console.ReadLine();
if (sendMsg.ToLower() == "quit")
{
sp.WriteLine(sendMsg);
cancel.Cancel();
break;
}
sp.WriteLine(sendMsg);
}
// 시리얼포트 닫기
sp.Close();
}
시리얼포트 클래스
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO.Ports;
using System.Collections;
namespace serialConnect
{
class SerialComm
{
public ArrayList arrSerialbuff = new ArrayList(); // 수신용 List 버퍼 선언
private SerialPort sp = new SerialPort();// 시리얼 포트 선언
//HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
// Comport 열기
//HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
public string Comport_Open(string port, string baud, string databits, string parity, string stop)
{
try
{
// 시리얼 통신 포트, 보레이트, 데이터 비트, 패리티, 스톱 비트를 설정
sp.PortName = port;
sp.BaudRate = int.Parse(baud);
sp.DataBits = int.Parse(databits);
sp.Parity = (Parity)Enum.Parse(typeof(Parity), parity);
sp.StopBits = (StopBits)Enum.Parse(typeof(StopBits), stop);
// 이미 오픈상태인지 체크하여 아니라면
if (!sp.IsOpen)
{
// 포트 열기
sp.Open();
}
// 포트가 열린 상태이면 연결 완료
if (sp.IsOpen)
{
return "연결완료";
}
else // 포트열기가 열린상태가 아니라면 연결 실패
{
return "연결실패";
}
}
catch (Exception ex)
{
throw ex;
}
}
//HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
// 수신 처리 //HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
public void RcvSerialComm()
{
try
{
// 포트가 열린 상태인지 체크
if (sp.IsOpen)
{
// 시리얼 수신 버퍼에 적재된 byte 개수를 읽어 온다.
int nbyte = sp.BytesToRead;
// 시리얼 byte개수 만큼 버퍼를 생성한다.
byte[] rbuff = new byte[nbyte];
// byte개수가 0보다 크다면
if (nbyte > 0)
{
// 수신버퍼에서 버퍼의 지정된 인덱스 부터 개수 만큼 읽어 온다.
sp.Read(rbuff, 0, nbyte);
}
// ArrayList에 적재한다.
for (int i = 0; i < nbyte; i++)
{
arrSerialbuff.Add(rbuff[i]);
}
}
}
catch (Exception ex)
{
// 수신에러 발생시
// ArrayList를 클리어한다.
arrSerialbuff.Clear();
//예외를 던지고 종료
throw ex;
}
}
}
}
깃
https://github.com/zakigaebal/serialConnect
시리얼프로그램
https://unininu.tistory.com/304
C# 시리얼통신을 뚫어보자(송신/수신, SerialPort, ReceiveData, Invoke)
C# 시리얼통신을 뚫어보자(송신/수신, SerialPort, ReceiveData, Invoke) PC와 외부 장치를 연결하기 위해 GUI를 만드는 중에 시리얼통신 수신 부분이 막혀서 인터넷을 검색하고 검색하여 이해한 내용을 정
unininu.tistory.com
RS485
https://developer-depot.tistory.com/13
[시리얼 통신] RS485 통신 분석
1. RS485 통신 이란? RS-232, RS-422의 확장 버전으로, 홈 네트워크를 지원하는 일종의 직렬 통신 프로토콜 표준. RS-232는 전송 속도가 낮고 전송 거리가 짧다. 이를 보완하기 위해 개발된 RS-422는 한
developer-depot.tistory.com
LORA통신이란
https://blog.naver.com/milkysc/221920748769
[포스팅]기기 통신 방식
[포스팅]SERIAL 통신
[포스팅]485 통신
[포스팅]LORA 통신
IOT는 그야말로 통신으로 모두가 연결되어 있는 개념입니다.
IOT에서 고려하고 있는 통신 시스템은 일반적으로 다음과 같습니다.
유선: 광, 유선이더넷, 전화모뎀, 케이블모템,PLC(전력선통신)
광: 국내에서는 가장 빠르고 안정적이지만 해외시장을 고려한 제품이라면 이러한 연결방식은 신중히 판단해야 합니다고속 인터넷 보급에서 한국이 전세계 1위이기에 광통신이 가정에까지 들어올 수 있는 것이지 이는 한국 이외의 대부분의 국가에서는 꿈도 꿀 수 없는 상황입니다.
시리얼 통신이란
병렬 데이터의 형태를 직렬방식으로 전환하여 데이터를 전송하는 컴퓨터 하드웨어의 일종
시리얼이라는 것은 직렬이라는 뜻으로 패러럴과 반대되는 단어이다.
직렬통신과 병렬통신의 2가지 방식이 존재한다
직렬통신은 데이터를 보낼때 한 데이터 선에서 데이터를 보내는 방식이고
병렬통신은 여러 개의 선에서 보내고자 하는 데이터를 나눠서 보내는 것이다.
예를 들어 1010데이터를 보내려고 할때 상황은 아래와 같다
- 시리얼 통신에서는 1개의 LANE으로 데이터를 모두 보낸다
- 병렬통신에서는 4개의 LANE이라고 가정할때 각 LANE(0~3번 LANE)에 1, 0, 1, 0 을 나눠서 보낸다
아두이노를 사용하면 가장 자주 접하는 통신방법이 Serial 통신이다 일단 PC와 연결되는 것 자체가 아두이노 입장에서는 Serial 통신을 사용하는 것이다
http://winnerspowerup.cafe24.com/archives/309
[IOT] 어떤 통신방식을 사용하는 것이 좋을 지 장단점을 알려주세요. « 스마트콘텐츠센터 컨설팅
IOT는 그야말로 통신으로 모두가 연결되어 있는 개념입니다. IOT에서 고려하고 있는 통신 시스템은 일반적으로 다음과 같습니다. 유선: 광, 유선이더넷, 전화모뎀, 케이블모템,PLC(전력선통신) 광:
winnerspowerup.cafe24.com
http://melonicedlatte.com/2021/03/25/113400.html
시리얼 통신의 종류(Uart/Usart, I2C, SPI)와 개념 및 차이점 정리 - Easy is Perfect
melonicedlatte.com
https://www.hardcopyworld.com/?p=2080
시리얼 통신 기초 (Serial Communication)
아두이노를 사용하면 가장 자주 접하는 통신 방법이 Serial 통신입니다. 일단 PC와 연결되는것 자체가 아두이노 입장에서는 Serial 통신을 사용하는 것이니까요. 그에 반해 Serial 통신의 세부 내용
www.hardcopyworld.com
시리얼(Serial) 통신이 뭘까?
시리얼 통신이 뭔데?…
medium.com
https://developer-depot.tistory.com/13
[시리얼 통신] RS485 통신 분석
1. RS485 통신 이란? RS-232, RS-422의 확장 버전으로, 홈 네트워크를 지원하는 일종의 직렬 통신 프로토콜 표준. RS-232는 전송 속도가 낮고 전송 거리가 짧다. 이를 보완하기 위해 개발된 RS-422는 한
developer-depot.tistory.com
C# 시리얼 통신 클래스 만들기
안녕하세요. 오늘은 시리얼 통신 모니터링 프로그램 클래스를 포스팅하겠습니다. 이 클래스 예제를 활용하면 시리얼 통신은 기본적으로 만들어 쓸수 있습니다. 시리얼 통신관련 설명은 아래 링
developer-depot.tistory.com
'프로그래밍 > C#' 카테고리의 다른 글
바이너리파일저장 (0) | 2022.03.29 |
---|---|
텍스트파일저장 (0) | 2022.03.29 |
테이블체크 (0) | 2022.03.28 |
C# 로또 조합번호 전부 가져오기 (0) | 2022.03.24 |
2022.03.21_발정데이터_farm3797_09시&17시 (0) | 2022.03.21 |