基於C#的計算機與安捷倫34970A通信方法

最近做個項目要用到安捷倫34970A採集數據,34970A支持RS232接口,但是如果直接用winform自帶的seriaport類基本是不管用的,經過幾天研究和問客服呀,也沒得到個啥結果,頭髮倒是掉了幾根。最終靈感突發,翻牆Google別國論壇,才知道安捷倫等儀表通訊需要用到VISA的庫。庫的獲取方法目前知道兩個,1個是下載是德科技的IO Library,還有就是上NI下載NI-VISA.用法都差不多,下面直接貼代碼`

using System;
using System.Windows.Forms;
using System.Threading;
using Ivi.Visa.Interop;

namespace 安捷倫採集儀
{
    public partial class Form1 : Form
    {


        public Form1()
        {
            InitializeComponent();
        }

        Ivi.Visa.Interop.ResourceManager rMgr = new Ivi.Visa.Interop.ResourceManager();
        FormattedIO488 src = new FormattedIO488();

        private void button1_Click(object sender, EventArgs e)
        {try {

                src.IO.Clear();
                src.WriteString("READ?");

                Thread.Sleep(100);
                textBox1.AppendText(src.ReadString());

            }
            catch { Console.WriteLine("error!"); }



        }

        private void button2_Click(object sender, EventArgs e)
        {
            src.IO =(IMessage)rMgr.Open("ASRL3::INSTR", AccessMode.NO_LOCK, 2000, null);
            //src.IO.Timeout = 1000;
        }

        private void button3_Click(object sender, EventArgs e)
        {
            src.IO.Close();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            src.IO = (IMessage)rMgr.Open("ASRL3::INSTR", AccessMode.NO_LOCK, 2000, null);
            //src.IO.Timeout = 1000;
            // src.IO.Clear();
            src.WriteString("READ?",true );

            Thread.Sleep(20);
            textBox1.AppendText(src.ReadString());
            src.IO.Close();
        }

        private void button4_Click(object sender, EventArgs e)
        {
            timer1.Start();
        }
         private void button5_Click(object sender, EventArgs e)
        {
            timer1.Stop();
        }
    }
}

然後貼上一篇操作說明書 這裏寫鏈接內容

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章