C#에서 이더넷, RS-485 및 RS-232 통신을 구현하는 예제 코드입니다.
이더넷 통신:
csharp
Copy code
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
public class EthernetCommunication
{
private Socket clientSocket;
public void Connect(string ipAddress, int port)
{
IPAddress serverIP = IPAddress.Parse(ipAddress);
IPEndPoint serverEndPoint = new IPEndPoint(serverIP, port);
clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
clientSocket.Connect(serverEndPoint);
}
public void SendMessage(string message)
{
byte[] sendData = Encoding.ASCII.GetBytes(message);
clientSocket.Send(sendData);
}
public string ReceiveMessage()
{
byte[] receiveData = new byte[1024];
int dataSize = clientSocket.Receive(receiveData);
string message = Encoding.ASCII.GetString(receiveData, 0, dataSize);
return message;
}
public void Disconnect()
{
clientSocket.Close();
}
}
RS-485 통신:
RS-485는 하드웨어 제어가 필요하므로 여기서는 라이브러리를 사용하여 구현하는 것이 좋습니다. 대표적인 라이브러리로는 "Modbus.SerialPort.dll"이 있습니다. 이 라이브러리는 RS-485 통신을 위한 Modbus 프로토콜을 제공합니다.
csharp
Copy code
using Modbus;
using Modbus.Data;
using Modbus.Device;
public class RS485Communication
{
private SerialPortAdapter serialPort;
public void Connect(string portName, int baudRate, Parity parity, int dataBits, StopBits stopBits)
{
serialPort = new SerialPortAdapter(portName);
serialPort.BaudRate = baudRate;
serialPort.Parity = parity;
serialPort.DataBits = dataBits;
serialPort.StopBits = stopBits;
serialPort.Open();
}
public void SendMessage(byte slaveAddress, ushort startAddress, ushort[] data)
{
IModbusSerialMaster master = ModbusSerialMaster.CreateRtu(serialPort);
master.WriteMultipleRegisters(slaveAddress, startAddress, new RegisterCollection(data));
}
public ushort[] ReceiveMessage(byte slaveAddress, ushort startAddress, ushort numberOfPoints)
{
IModbusSerialMaster master = ModbusSerialMaster.CreateRtu(serialPort);
ushort[] data = master.ReadHoldingRegisters(slaveAddress, startAddress, numberOfPoints);
return data;
}
public void Disconnect()
{
serialPort.Close();
}
}
RS-232 통신:
RS-232 통신도 하드웨어 제어가 필요하므로 라이브러리를 사용하여 구현하는 것이 좋습니다.C#에는 기본적으로 포함된 System.IO.Ports 네임스페이스를 사용하여 RS-232 통신을 구현할 수 있습니다. 이 네임스페이스는 SerialPort 클래스를 제공하며, 시리얼 포트를 열고 데이터를 송수신할 수 있는 기능을 제공합니다
이어서 RS-232 통신의 예제 코드입니다.
csharp
Copy code
using System.IO.Ports;
public class RS232Communication
{
private SerialPort serialPort;
public void Connect(string portName, int baudRate, Parity parity, int dataBits, StopBits stopBits)
{
serialPort = new SerialPort(portName, baudRate, parity, dataBits, stopBits);
serialPort.Open();
}
public void SendMessage(string message)
{
serialPort.WriteLine(message);
}
public string ReceiveMessage()
{
return serialPort.ReadLine();
}
public void Disconnect()
{
serialPort.Close();
}
}
위의 예제 코드를 사용하여 C#에서 이더넷, RS-485 및 RS-232 통신을 구현하고 상호간 통신을 테스트할 수 있습니다. 필요에 따라 코드를 수정하여 특정 프로토콜이나 장치에 맞게 커스터마이즈할 수 있습니다.
I am a father of one boy and two girls living in Cheongju. We love to go "plogging" together every day. Plogging is an activity where we pick up litter while taking a walk, with the goal of preserving the environment and creating a clean community. It's a valuable time for our family to join forces.
You can find our activities on YouTube at https://www.youtube.com/@0070TV. We kindly ask for your support and encouragement.
'[프로그램]' 카테고리의 다른 글
| C# 10개의 모양으로 구동하는 버튼 소스 (0) | 2023.06.26 |
|---|---|
| 넥사크로(Nexacro)로 구현된 로또 번호 생성기 프로그램의 예시 소스 코드 (0) | 2023.06.26 |
| C#으로 2중 라인 엘리베이터 (0) | 2023.06.26 |
| C#으로 자동 로또 번호 생성 프로그램. (0) | 2023.06.26 |
| C++로 자동 로또 번호 생성 프로그램 (0) | 2023.06.26 |