labview使用datasocket与c/c#程序的通信

Datasocket的简介中提到可以通过Datasocket ActiveX控件,来使visual studio与labview之间进行通讯,将labview发送的数据由c#语言编写的程序接收,请问有人知道具体怎么做吗,Datasocket ActiveX控件又如何获取呢,使用vs的pc是不是需要安装什么驱动或者服务,又或者除了ActiveX之外还有什么其他方式能完成labview与c#程序的通信,希望能提供具体的操作流程。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Threading;
using System.Net.Sockets;

namespace server
{
    public partial class Form1 : Form
    {
        /// <summary>
        /// 首先定义几个全局变量
        /// </summary>
        private System.Net.Sockets.Socket sock, accSock;
        private IPAddress myIP = IPAddress.Parse("127.0.0.1");
        private IPEndPoint MyServer;
        Thread threadServer;
        private bool check = true;

        public Form1()
        {
            InitializeComponent();
        }

        /// <summary>
        /// 开始监听按钮
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void BtnStartListen_Click(object sender, EventArgs e)
        {
            try
            {
                IPHostEntry myHost = new IPHostEntry();
                myHost = Dns.GetHostByName(this.textIP.Text.Trim());
                string str = myHost.AddressList[0].ToString();
                myIP = IPAddress.Parse(str);
            }
            catch
            {
                MessageBox.Show("你输入的IP地址格式不对,请重新检查!");
            }
            try
            {
                threadServer = new Thread(new ThreadStart(accpServer));
                threadServer.IsBackground = true;
                threadServer.Start();
            }
            catch (Exception err)
            {
                this.textMsgSate.AppendText(err.Message);
            }
        }

        /// <summary>
        /// 开启一个线程监听labview发来的消息
        /// </summary>
        private void accpServer()
        {
            Control.CheckForIllegalCrossThreadCalls = false;//取消线程保护
            MyServer = new IPEndPoint(myIP, Int32.Parse(this.textPort.Text));
            sock = new System.Net.Sockets.Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            sock.Bind(MyServer);
            sock.Listen(50);
            this.textMsgSate.AppendText("主机:" + this.textIP.Text + "端口:" + this.textPort.Text +"\r"+"开始监听......\r\n");
            accSock = sock.Accept();
            if (accSock.Connected)
            {
                this.textMsgSate.AppendText("与labview连接成功!"+"\r\n");
                while (check)
                {
                    Byte[] Rec = new Byte[64];
                    NetworkStream netStream = new NetworkStream(accSock);
                    netStream.Read(Rec, 0, Rec.Length);
                    string RecMessage =
                        System.Text.Encoding.ASCII.GetString(Rec);
                    this.textReciveMsg.AppendText(RecMessage + "\r\n");
                }
            }
        }
        /// <summary>
        /// 停止监听
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void BtnStopListen_Click(object sender, EventArgs e)
        {
            try
            {
                threadServer.Abort();
                sock.Close();
                this.textMsgSate.AppendText("主机:" + this.textIP.Text + "端口:" + this.textPort.Text + "监听停止!\r\n");
            }
            catch
            {
                MessageBox.Show("监听尚未开始,关闭无效!");
            }
        }

        private void Btnsend_Click(object sender, EventArgs e)
        {
            try
            {
                byte[] sendByte = new byte[64];
                string send = this.textSendMsg.Text + "\r\n";
                NetworkStream netStream = new NetworkStream(accSock);
                sendByte = System.Text.Encoding.ASCII.GetBytes(send.ToCharArray());
                netStream.Write(sendByte, 0, sendByte.Length);
                this.textSendMsg.Text = "send over!";
            }
            catch
            {
                MessageBox.Show("连接未建立,发送失败!");
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Control.CheckForIllegalCrossThreadCalls = false;//取消线程保护
        }

        private void Form1_Load_1(object sender, EventArgs e)
        {

        }


    }
}
 

网络变量LabView与C#通信,LabView是2016版本,C#在VS2017中编写,包含了简单数据通信,复杂数据通信,VS中需要安装Measurement Studio
相关下载链接://download.csdn.net/download/gxb02/12839330?utm_source=bbsseo

您好,我是问答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~