반응형
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace TEST_RTU
{
public partial class Form1 : Form
{
//통신 연결 클래스
MainConnect MainCon = new MainConnect();
cThreadingTimer ThreadTimer = new cThreadingTimer();
int OpenCheck = 0;
public Form1()
{
InitializeComponent();
RtuConnection();
timer1.Enabled = true;
timer2.Enabled = true;
}
//=========================================================
//시리얼포트 연결을 위한 설정
//=========================================================
private void SeriportSetUp()
{
//설정 값은 (각 통신 장비마다 다름)//
MainCon.fn_iniPort("COM1", 9600, "N", 8, 1);
}
//========================================================
//프로그램 동작시 장치정보(셋업)에 따라 시리얼포트 연결
//========================================================
private void RtuConnection()
{
try
{
SeriportSetUp();
MainCon.SerialPort_Open();
if (MainCon.serialport.IsOpen == true)
{
OpenCheck = 1;
ThreadTimer.fn_start(MainCon.CallbackData, 2000, 1000);
}
else
{
SeriportSetUp();
MainCon.SerialPort_Open();
}
}catch (Exception e)
{
e.Message.ToString();
}
}
/* ****************** 송수신 데이터 확인 메서드 **********************
* ****************** Hex 변환 값 뿌려주기 ********************
* *******************************************************************/
private void fn_TestData()
{
if (OpenCheck == 1)
{
for (int i = 0; i < 8; i++) textBox1.Text += fn_SendToHex(i).ToString() + " ";
for (int i = 0; i < 126; i++) textBox2.Text += fn_ReadToHex(i).ToString() + " ";
}
}
/* ****************** 송신 버퍼 값을 Hex 값으로 변환하여 확인 *********************/
/**********************************************************************************/
private string fn_SendToHex(int startx)
{
string str;
str = string.Format("{0:X2}", MainConnect.Sendbuff[startx]);
return str;
}
/* *************** 수신(리드) 버퍼 값을 Hex 값으로 변환하여 확인 ****************/
/********************************************************************************/
private string fn_ReadToHex(int startx)
{
string str;
str = string.Format("{0:X2}", MainConnect
.CopyReadBuff[startx]);
return str;
}
// 1초 타이머 함수
// fn_TestData IN Timer
private void timer1_Tick(object sender, EventArgs e)
{
fn_TestData();
}
private void timer2_Tick(object sender, EventArgs e)
{
textBox1.Text = "";
textBox2.Text = "";
}
}
}
[C#] - C# 모드버스 RTU 시리얼통신 구현하기2 (주석 추가, 소스 공개)
[C#] - C# 모드버스 RTU 시리얼통신 구현하기 (주석 추가, 소스 공개)
[C#] - C# 모드버스 RTU 시리얼통신 구현 소스 파일 첨부
반응형
'C#' 카테고리의 다른 글
C# RabbitMQ 연동 기본 소스[Produce] (0) | 2021.01.06 |
---|---|
C# 모드버스 RTU 시리얼통신 구현 소스 파일 첨부 (8) | 2020.12.22 |
C# 모드버스 RTU 시리얼통신 구현하기 (주석 추가, 소스 공개) (0) | 2020.12.09 |
C# 모드버스 RTU 시리얼통신 구현하기2 (주석 추가, 소스 공개) (3) | 2020.12.09 |
C# 쓰레드 타이머 사용하기 (0) | 2019.11.05 |