天天看點

Tony.SerialPorts.RS232序列槽參數配置子產品:掃描事件例程

namespace Test_temp

{

1.    public partial class Form1 : Form

2.   {

3.        public Form1()

4.        {

5.            InitializeComponent();

6.            button1.Enabled = false;

7.            //*引用Tony.SerialPorts.RS232.dll(将Tony.SerialPorts.RS232.dll、HDInfo.txt複制到運作目錄下)

8.            //擷取RS232入口

9.            Tony.SerialPorts.RS232Enroll.GetRS232Enroll();

10.          //Tony.SerialPorts.RS232Enroll.RunRS232Enroll如果不是null,說明正确 擷取序列槽。

11.          if (Tony.SerialPorts.RS232Enroll.RunRS232Enroll != null)

12.          {

13.               button1.Enabled = true;

14.          }

15.      }

16.      private Tony.SerialPorts.RS232.IRS232 IRS232Comm1 = null;

17.      private void button1_Click(object sender, EventArgs e)

18.       {

19.           //*進行序列槽參數配置

20.

21.           //從配置檔案中擷取以前配置的序列槽參數。

22.            Tony.SerialPorts.RS232.RS232Setting xSetting = Tony.SerialPorts.RS232.RS232Setting.GetSetting(Application.StartupPath + @".\RS232Set\RS232Set1.IO");

23.            如無配置檔案……

24.            //Tony.SerialPorts.RS232.RS232Setting xSetting = new Tony.SerialPorts.RS232.RS232Setting();

25.

26.            //調用,進行序列槽參數配置:(x1_Scan:序列槽自動掃描事件的引用。

27.            Tony.SerialPorts.RS232Enroll.RunRS232Enroll.RS232Worker.RunRS232Setting(xSetting, Application.StartupPath + @".\RS232Set\RS232Set1.IO", "testScan", false , x1_Scan);

28.        }

29.        private void x1_Scan(Tony.SerialPorts.RS232.RS232Setting gSetting, string[] gScanRS232Port, out string gRS232Port, string gUserName)

30.        {

31.            //*此事件由Tony.SerialPorts.RS232Enroll.RunRS232Enroll.RS232Worker.RunRS232Setting(……)在點選“掃描”按鈕後自動執行。

32.            //*此事件用途:在可用的序列槽号集合gScanRS232Port中,分别向序列槽發送指定指令,如接到符合條件的資料,即認為是可用序列槽。

33.            //*以K2000為例:用Transact方法當發送指令":SYSTem:BEEPer:STATe?",如儀表回送的指令中包含"1"(即“*1*”,*為任意字元)。

34.            //*此例請将序列槽參數配置窗體中,接收中斷字元、發送附加字元設定成“CR”。

35.            //*Transact方法發送指令後主動回收資料,并不依賴于資料接收事件。

36.            //*參考http://blog.csdn.net/tonysungood000/article/details/78763553

37.            //*參考http://blog.csdn.net/tonysungood000/article/details/78780109

38.            //*參考http://blog.csdn.net/tonysungood000/article/details/78788391

39.

40.            //gSetting:使用者在配置窗體中,配置好的參數設定。

41.            //gScanRS232Port:可選的序列槽号(計算機存在的序列槽号集合)

42.            //gRS232Port:掃描後,由使用者設定符合條件的序列槽号。

43.

44.

45.            gRS232Port = null;

46.            //取得一個序列槽執行個體

47.            this.IRS232Comm1 = Tony.SerialPorts.RS232Enroll.RunRS232Enroll.RS232Worker.GetRS232Working(gUserName);

48.            

49.            //周遊可用的序列槽号

50.            for (int i = 0; i < gScanRS232Port.Length; i++)

51.            {

52.                try

53.                {

54.                    //設定臨時序列槽号

55.                    gSetting.port = gScanRS232Port[i];

56.                    //設定序列槽參數

57.                    this.IRS232Comm1.Settings = gSetting;

58.                    //打開序列槽

59.                    this.IRS232Comm1.Open();

60.

61.                    //向打開的序列槽發送指令":SYSTem:BEEPer:STATe?",如接收資料中包含 "1",即認為符合條件,傳回接收到的資料,否則輸出為null;

62.                    object xValue = this.IRS232Comm1.Transact(":SYSTem:BEEPer:STATe?", -1, 3, "1", true);

63.                    if (xValue != null)

64.                    {

65.                        //成功掃描到符合條件序列槽,設定符合條件的序列槽号,傳回。

66.                        gRS232Port = gScanRS232Port[i];

67.                        break;

68.                    }

69.                }

70.                finally

71.                {

72.                    this.IRS232Comm1.Close();

73.                }

74.            }

75.            this.IRS232Comm1.Dispose();

76.            this.IRS232Comm1 = null;

77.        }

78.

79.    }

}

繼續閱讀