XG5000이 설치되어 있어야 함
using XGCommLib;
namespace XGCommLib
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
CommObjectFactory20 factory = new CommObjectFactory20();
}
private void Button_Connect_Click(object sender, RoutedEventArgs e)
{
//연결
CommObjectFactory20 factory = new CommObjectFactory20();
CommObject20 oCommDriver = factory.GetMLDPCommObject20("192.168.1.33:2004");
if (0 == oCommDriver.Connect(""))
{
MessageBox.Show("연결 실패");
}
else
{
MessageBox.Show("연결 성공");
}
//버퍼 초기화
int nMaxBuf = 1400;
byte[] bufWrite = new byte[nMaxBuf];
int nTotal_len = 0;
//데이터 설정
XGCommLib.DeviceInfo oDevice = factory.CreateDevice();
ComboBoxItem item = (ComboBoxItem)ComboBox_DataType.SelectedValue;
char item_name = item.Content.ToString()[0];
oDevice.ucDataType = (byte)item_name;
item = (ComboBoxItem)ComboBox_DeviceType.SelectedValue;
item_name = item.Content.ToString()[0];
oDevice.ucDeviceType = (byte)item_name;
//if문으로 X,B,W를 나눌려고 코드를 추가하니 오류가 발생했다.
//위의 item과 item_name도 사실 없어도 된다.
//데이터 타입은 'X' 디바이스 타입은 'M'으로 직접 설정하면된다.
//8로 나누는 이유는 1byte = 8bit이기 때문이다.
if (oDevice.ucDataType == (byte)'X')
{
int sum = int.Parse(TextBox_ByteOffset.Text) + int.Parse(TextBox_BitOffset.Text);
oDevice.lOffset = sum / 8;
oDevice.lSize = sum % 8;
}
oDevice.lOffset = int.Parse(TextBox_ByteOffset.Text);
oDevice.lSize = int.Parse(TextBox_BitOffset.Text);
oCommDriver.AddDeviceInfo(oDevice);
bufWrite[0] = (byte)int.Parse(TextBox_1or0.Text);
nTotal_len += 1;
//데이터 전송
byte[] bWriteBuf = new byte[nTotal_len];
Array.Copy(bufWrite, 0, bWriteBuf, 0, nTotal_len);
if(1 == oCommDriver.WriteRandomDevice(bWriteBuf))
{
MessageBox.Show("데이터 전송 성공");
}
else
{
MessageBox.Show("데이터 전송 실패");
}
//데이터 읽기
byte[] bufRead = new byte[nTotal_len];
if(1==oCommDriver.ReadRandomDevice(bufRead))
{
for (int i = 0; i < bufRead.Length; i++)
{
TextBox_Result.AppendText(bufRead[i].ToString("X2"));
}
MessageBox.Show("데이터 읽기 성공");
}
else
{
MessageBox.Show("데이터 읽기 실패");
}
if(false == bWriteBuf.SequenceEqual(bufRead))
{
TextBox_Result.AppendText("Mismatch");
}
else
{
TextBox_Result.AppendText("Match");
}
//연결 종료
int nRetn = oCommDriver.Disconnect();
if(nRetn == 1)
{
MessageBox.Show("연결 종료");
}
else
{
MessageBox.Show("연결 종료 실패");
}
}
}
}