Datasocket的简介中提到可以通过Datasocket ActiveX控件,来使visual studio与labview之间进行通讯,将labview发送的数据由c#语言编写的程序接收,请问有人知道具体怎么做吗,Datasocket ActiveX控件又如何获取呢,使用vs的pc是不是需要安装什么驱动或者服务,又或者除了ActiveX之外还有什么其他方式能完成labview与c#程序的通信,希望能提供具体的操作流程。
3条回答 默认 最新
- 歇歇 2021-03-30 19:07关注
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)
{}
}
}
解决 1无用 1
悬赏问题
- ¥15 基于卷积神经网络的声纹识别
- ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
- ¥100 为什么这个恒流源电路不能恒流?
- ¥15 有偿求跨组件数据流路径图
- ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
- ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
- ¥15 CSAPPattacklab
- ¥15 一直显示正在等待HID—ISP
- ¥15 Python turtle 画图
- ¥15 stm32开发clion时遇到的编译问题