iT邦幫忙

0

c#疑問請求幫忙

c#

各位大神你們好!
最近在練習寫plc程式
我程式讀取plc需要用到16進位
所以我把textBox13轉換成16進位
但現在textBox13只能輸入16進位
需要而外加什麼程式碼
才能給其他使用者在textBox13輸入10進位?

程式碼區塊
byte[] data1 = { 0x46, 0x49, 0x4E, 0x53, 0x00, 0x00, 0x00, 0x1A,
                0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00,
                0x02, 0x00, 0x01, 0x00, 0x00, 0x03, 0x00, 0x01 };
            byte[] command = { 0x01, 0x02 };
            byte[] data2 = { 0x00 };
            byte[] data3 = {0x00, 0x00 };
            byte[] data4 = { 0x00 };
            byte[] data5 = { 0x00, 0x00 };
            byte[] data6 = { 0x00, 0x00 };
            data1 = data1.Concat(command).ToArray();
    
            data3 = GetBytes(textBox10.Text);           
            data5 = GetBytes(textBox13.Text);
            
            for (i = 0; i < Convert.ToInt32(textBox13.Text, 16); i++)
            {
                str += textBox11.Text;
            }
                        
            data6 = GetBytes(str);
            data1 = data1.Concat(data2).Concat(data3).Concat(data4).Concat(data5).Concat(data6).ToArray();
            data1[7] = Convert.ToByte((data1.Length - 8).ToString("X2"), 16);

            server.Send(data1);
            byte[] rece = new byte[250];
            server.Receive(rece);
            textBox2.Text = "0102" +
                            comboBox1.Text.Trim() +
                            textBox10.Text.Trim() +
                            textBox13.Text.Trim() +
                            str.Trim();
            
            for (int i = 0; i < rece.Length; i++)
            {
                textBox3.Text += rece[i].ToString("X2") + " ";
            }
看更多先前的討論...收起先前的討論...
不明
【**此則訊息已被站方移除**】
plc是歐姆龍的
單純讀取寫入
kgame iT邦新手 4 級 ‧ 2019-10-14 07:52:07 檢舉
多少進位制是給"人"看的,PLC才不管介面呈現多少進位制。你搞懂這個概念就知道怎麼寫了
不明
【**此則訊息已被站方移除**】

2 個回答

0
舜~
iT邦研究生 2 級 ‧ 2019-10-14 08:12:43

textBox預設只能16進位??

  1. textBox重設為預設,類型設為整數
    不然改用文字框(不限制數字),後續做數字判斷

(c#的textBox預設整數應為十進位,個人沒玩過pcl,或許因為plc環境會有差異)

2.輸入內容轉16進位

0
Luke
iT邦新手 3 級 ‧ 2019-10-16 13:15:46

您查一下 HslCommunication

// 欧姆龙PLC通讯,指定PLC的ip地址和端口号
var omronFinsNet = new OmronFinsNet("192.168.1.110", 6000);
omronFinsNet.SA1 = 10;
omronFinsNet.DA1 = 110;
// 连接对象
OperateResult connect = omronFinsNet.ConnectServer( );
if (!connect.IsSuccess){
    Console.WriteLine( "connect failed:" + connect.Message );
    return;
}
// 举例读取D100的值
short D100 = omronFinsNet.ReadInt16( "D100" ).Content;
omronFinsNet.ConnectClose( );

我要發表回答

立即登入回答