当前位置:首页 » 操作系统 » 上位机源码

上位机源码

发布时间: 2023-08-26 08:43:34

‘壹’ 如何编程使上位机(界面c#)与下位机(单片机keil c)通过TCP/UDP协议来实现通信,最好有源代码,谢谢~~

看来兄弟是想用单片机弄网络终端啊,但是你的问题描述不够精准, 如果你是想单片机和PC之间实现ip/tcp方式通讯, 那么在单片机端有支持这一协议可以和串口连接的的芯片, PC端的程序实际上你没必要求什么源码, 有源码你也不见得编译过去, 这个看看C#关于网络编程的几步走就行了, 很简单的. 这个方式实际最后还是单片机的串口在起作用, 但是好处是可以远距离和多设备通信, 不知道这个是不是你的本意, 如果你仅仅是为了完成实验想要实现单片机和winform的通讯那么没必要非用tcp协议, 串口还是很方便的, 你可以winform端绑定一个端口, 然后用VSPM虚拟串口软件来与单片机通讯, 外设就稍多了.希望我的回答可以帮到你, 不明白的可以追问!

‘贰’ 新阁教育 喜课堂 上位机课程 花了4000元 但源码加密了怎么办

腾讯课堂花4000元买的课,通讯源码却是加密码的,
那你的毁如钱交给谁了?那就应宽余让该问他要密码啊。
如果是他不肯给你,那就是骗慎局子啊,
那就应该赶紧报警,让警察帮助你了。

‘叁’ 跪求labview串口多通道数据采集上位机程序源码、单片机下位机串口连接!~~不是数据采集卡!~谢谢

要解决数据帧出错的问题,得考虑上下位机数据格式的对应和时间标识统一,确保上位机能够识别出每一段数据的起止位置。

‘肆’ 怎么用匿名四轴的上位机获取源码

pid控制电机是需要参照的 例如跟据 压力。温度。液位。等等这些来控制电机转数 至于p是比例盘 i积分 d代表微分 通过修改这3个参数可以使pid控制达到最佳状态

‘伍’ c# 上位机控制欧姆龙plc的项目

搜一下FinsTcp.DLL/FinsUDP.DLL,欧姆龙的PLC用的就是这个协议的;

刚好有空,写段代码吧:

usingSystem.Collections.Generic;
usingSystem;
usingSystem.Linq;
usingSystem.Drawing;
usingSystem.Diagnostics;
usingSystem.Data;
usingSystem.Xml.Linq;
usingMicrosoft.VisualBasic;
usingSystem.Collections;
usingSystem.Windows.Forms;


usingSystem.Runtime.InteropServices;

namespaceComTest
{
publicpartialclassForm1
{
publicForm1()
{
InitializeComponent();


if(defaultInstance==null)
defaultInstance=this;
}

#regionDefaultInstance

;


publicstaticForm1Default
{
get
{
if(defaultInstance==null)
{
defaultInstance=newForm1();
defaultInstance.FormClosed+=newFormClosedEventHandler(defaultInstance_FormClosed);
}

returndefaultInstance;
}
set
{
defaultInstance=value;
}
}

staticvoiddefaultInstance_FormClosed(objectsender,FormClosedEventArgse)
{
defaultInstance=null;
}

#endregion

HostLink.PlcComPLC=newHostLink.PlcCom();//基于HostLink.DLL新建实例
HostLink.PlcCom.PlcMemoryCIO=HostLink.PlcCom.PlcMemory.CIO;
HostLink.PlcCom.PlcMemoryLR=HostLink.PlcCom.PlcMemory.LR;
HostLink.PlcCom.PlcMemoryDR=HostLink.PlcCom.PlcMemory.DR;
HostLink.PlcCom.PlcMemoryHR=HostLink.PlcCom.PlcMemory.HR;

boolEntLink;
longScanCount;
shortScanRet;
boolScanRun;

[DllImport("winmm.dll",ExactSpelling=true,CharSet=CharSet.Ansi,SetLastError=true)]
();


publicvoidForm1_Load(System.Objectsender,System.EventArgse)
{
shorti=0;
this.CenterToScreen();
cmbReadMry.Items.Add("CIO");
cmbReadMry.Items.Add("LR");
cmbReadMry.Items.Add("DR");
cmbReadMry.Items.Add("HR");
cmbWriteMry.Items.Add("CIO");
cmbWriteMry.Items.Add("LR");
cmbWriteMry.Items.Add("DR");
cmbWriteMry.Items.Add("HR");
cmbBitMry.Items.Add("CIO");
cmbBitMry.Items.Add("LR");
cmbBitMry.Items.Add("DR");
cmbBitMry.Items.Add("HR");
for(i=0;i<=15;i++)
{
cmbBit.Items.Add("Bit"+System.Convert.ToString(i));
}
cmbReadType.Items.Clear();
cmbReadType.Items.Add("INT16");
cmbReadType.Items.Add("UINT16");
cmbReadType.Items.Add("DINT32");
cmbReadType.Items.Add("HEX32");
cmbReadType.Items.Add("REAL32");
cmbReadType.Items.Add("BIN16");
cmbReadType.Items.Add("BCD16");
cmbReadType.Items.Add("BCD32");
cmbWriteType.Items.Clear();
cmbWriteType.Items.Add("INT16");
cmbWriteType.Items.Add("UINT16");
cmbWriteType.Items.Add("DINT32");
cmbWriteType.Items.Add("HEX32");
cmbWriteType.Items.Add("REAL32");
cmbWriteType.Items.Add("BIN16");
cmbWriteType.Items.Add("BCD16");
cmbWriteType.Items.Add("BCD32");
cmbReadMry.SelectedIndex=2;
cmbWriteMry.SelectedIndex=2;
cmbBitMry.SelectedIndex=0;
cmbBit.SelectedIndex=0;
cmbReadType.SelectedIndex=0;
cmbWriteType.SelectedIndex=0;
lstRead.Items.Clear();
txtWrite.Text="";
}

publicvoidbutLink_Click(System.Objectsender,System.EventArgse)
{
shortre=0;
stringrestr="";
re=PLC.ComLink(Convert.ToUInt16(txtStation.Text),Convert.ToUInt16(txtPort.Text),Convert.ToUInt32(txtRate.Text),7,2,HostLink.PlcCom.ParityType.Even,Convert.ToUInt16(txtDelay.Text),"DEMO");
txtReLink.Text=re.ToString();
if(re==0)
{
EntLink=true;
MessageBox.Show("PLC联接成功:"+restr);
}
else
{
EntLink=false;
MessageBox.Show("PLC联接失败:"+restr);
}
}

publicvoidbutClose_Click(System.Objectsender,System.EventArgse)
{
shortre=0;
if(!EntLink)
{
MessageBox.Show("还未与PLC建立联接!");
return;
}
re=PLC.DeLink();
txtReClose.Text=re.ToString();
}

publicvoidbutRead_Click(System.Objectsender,System.EventArgse)
{
shorti=0;
object[]RD=null;
RD=newobject[Convert.ToInt16(txtReadCnt.Text)];
if(!EntLink)
{
MessageBox.Show("还未与PLC建立联接!");
return;
}
intvar1=cmbReadType.SelectedIndex+1;
HostLink.PlcCom.DataTypetyp=(HostLink.PlcCom.DataType)var1;
switch(cmbReadMry.SelectedIndex)
{
case0:
ScanRet=PLC.CmdRead(Convert.ToUInt16(txtStation.Text),CIO,typ,Convert.ToUInt16(txtReadAdd.Text),Convert.ToUInt16(txtReadCnt.Text),refRD);
break;
case1:
ScanRet=PLC.CmdRead(Convert.ToUInt16(txtStation.Text),LR,typ,Convert.ToUInt16(txtReadAdd.Text),Convert.ToUInt16(txtReadCnt.Text),refRD);
break;
case2:
ScanRet=PLC.CmdRead(Convert.ToUInt16(txtStation.Text),DR,typ,Convert.ToUInt16(txtReadAdd.Text),Convert.ToUInt16(txtReadCnt.Text),refRD);
break;
case3:
ScanRet=PLC.CmdRead(Convert.ToUInt16(txtStation.Text),HR,typ,Convert.ToUInt16(txtReadAdd.Text),Convert.ToUInt16(txtReadCnt.Text),refRD);
break;
}
txtReRead.Text=ScanRet.ToString();
lstRead.Items.Clear();
for(i=0;i<=(RD.Length-1);i++)
{
if(!(RD[i]==null))
{
lstRead.Items.Add(RD[i]);
}
else
{
lstRead.Items.Add("0");
}
}
}


publicvoidbutWrite_Click(System.Objectsender,System.EventArgse)
{
shorti=0;
string[]temp=null;
object[]WD=null;
if(!EntLink)
{
MessageBox.Show("还未与PLC建立联接!");
return;
}
WD=newobject[Convert.ToUInt16(txtWriteCnt.Text)];
temp=txtWrite.Text.Split(' ');
for(i=0;i<=(WD.Length-1);i++)
{
if(i>(temp.Length-1))
{
WD[i]=0;
}
else
{
WD[i]=temp[i].Trim();
}
}
intvar1=cmbWriteType.SelectedIndex+1;
HostLink.PlcCom.DataTypetyp=(HostLink.PlcCom.DataType)var1;
switch(cmbWriteMry.SelectedIndex)
{
case0:
ScanRet=PLC.CmdWrite(Convert.ToUInt16(txtStation.Text),CIO,typ,Convert.ToUInt16(txtWriteAdd.Text),Convert.ToUInt16(txtWriteCnt.Text),refWD);
break;
case1:
ScanRet=PLC.CmdWrite(Convert.ToUInt16(txtStation.Text),LR,typ,Convert.ToUInt16(txtWriteAdd.Text),Convert.ToUInt16(txtWriteCnt.Text),refWD);
break;
case2:
ScanRet=PLC.CmdWrite(Convert.ToUInt16(txtStation.Text),DR,typ,Convert.ToUInt16(txtWriteAdd.Text),Convert.ToUInt16(txtWriteCnt.Text),refWD);
break;
case3:
ScanRet=PLC.CmdWrite(Convert.ToUInt16(txtStation.Text),HR,typ,Convert.ToUInt16(txtWriteAdd.Text),Convert.ToUInt16(txtWriteCnt.Text),refWD);
break;
}
txtReWrite.Text=ScanRet.ToString();
}

publicvoidbutScan_Click(System.Objectsender,System.EventArgse)
{
if(!EntLink)
{
MessageBox.Show("还未与PLC建立联接!");
return;
}
if(butScan.Text=="CycleR/W")
{
ScanCount=0;
ScanRun=true;
Timer1.Enabled=true;
butScan.Text="StopR/W";
}
else
{
ScanRun=false;
Timer1.Enabled=false;
butScan.Text="CycleR/W";
}
}

publicvoidTimer1_Tick(System.Objectsender,System.EventArgse)
{
Timer1.Enabled=false;
if(!ScanRun)
{
butScan_Click(null,null);
return;
}
inttim=System.Convert.ToInt32(timeGetTime());
if(!EntLink)
{
MessageBox.Show("还未与PLC建立联接!");
return;
}
//
butRead_Click(null,null);
if(ScanRet<0)
{
ScanRun=false;
return;
}
butWrite_Click(null,null);
if(ScanRet<0)
{
ScanRun=false;
return;
}
//
ScanCount++;
txtScanCnt.Text=ScanCount.ToString();
txtScanPrd.Text=(System.Convert.ToInt32(timeGetTime())-tim)+"ms";
Timer1.Enabled=true;
}


publicvoidbutBitTest_Click(System.Objectsender,System.EventArgse)
{
if(!EntLink)
{
MessageBox.Show("还未与PLC建立联接!");
return;
}
boolrd=false;
shortre=0;
switch(cmbBitMry.SelectedIndex)
{
case0:
re=PLC.Bit_Test(Convert.ToUInt16(txtStation.Text),CIO,Convert.ToUInt16(txtBitAdd.Text),Convert.ToUInt16(cmbBit.SelectedIndex),refrd);
break;
case1:
re=PLC.Bit_Test(Convert.ToUInt16(txtStation.Text),LR,Convert.ToUInt16(txtBitAdd.Text),Convert.ToUInt16(cmbBit.SelectedIndex),refrd);
break;
case2:
re=PLC.Bit_Test(Convert.ToUInt16(txtStation.Text),DR,Convert.ToUInt16(txtBitAdd.Text),Convert.ToUInt16(cmbBit.SelectedIndex),refrd);
break;
case3:
re=PLC.Bit_Test(Convert.ToUInt16(txtStation.Text),HR,Convert.ToUInt16(txtBitAdd.Text),Convert.ToUInt16(cmbBit.SelectedIndex),refrd);
break;
}
txtBitTest.Text=System.Convert.ToString(rd);
txtReBit.Text=re.ToString();
}

publicvoidbutBitSet_Click(System.Objectsender,System.EventArgse)
{
if(!EntLink)
{
MessageBox.Show("还未与PLC建立联接!");
return;
}
shortre=0;
switch(cmbBitMry.SelectedIndex)
{
case0:
re=PLC.Bit_Set(Convert.ToUInt16(txtStation.Text),CIO,Convert.ToUInt16(txtBitAdd.Text),Convert.ToUInt16(cmbBit.SelectedIndex));
break;
case1:
re=PLC.Bit_Set(Convert.ToUInt16(txtStation.Text),LR,Convert.ToUInt16(txtBitAdd.Text),Convert.ToUInt16(cmbBit.SelectedIndex));
break;
case2:
re=PLC.Bit_Set(Convert.ToUInt16(txtStation.Text),DR,Convert.ToUInt16(txtBitAdd.Text),Convert.ToUInt16(cmbBit.SelectedIndex));
break;
case3:
re=PLC.Bit_Set(Convert.ToUInt16(txtStation.Text),HR,Convert.ToUInt16(txtBitAdd.Text),Convert.ToUInt16(cmbBit.SelectedIndex));
break;
}
txtReBit.Text=re.ToString();
}

publicvoidbutBitRst_Click(System.Objectsender,System.EventArgse)
{
if(!EntLink)
{
MessageBox.Show("还未与PLC建立联接!");
return;
}
shortre=0;
switch(cmbBitMry.SelectedIndex)
{
case0:
re=PLC.Bit_Reset(Convert.ToUInt16(txtStation.Text),CIO,Convert.ToUInt16(txtBitAdd.Text),Convert.ToUInt16(cmbBit.SelectedIndex));
break;
case1:
re=PLC.Bit_Reset(Convert.ToUInt16(txtStation.Text),LR,Convert.ToUInt16(txtBitAdd.Text),Convert.ToUInt16(cmbBit.SelectedIndex));
break;
case2:
re=PLC.Bit_Reset(Convert.ToUInt16(txtStation.Text),DR,Convert.ToUInt16(txtBitAdd.Text),Convert.ToUInt16(cmbBit.SelectedIndex));
break;
case3:
re=PLC.Bit_Reset(Convert.ToUInt16(txtStation.Text),HR,Convert.ToUInt16(txtBitAdd.Text),Convert.ToUInt16(cmbBit.SelectedIndex));
break;
}
txtReBit.Text=re.ToString();
}


}

}
热点内容
不属于c语言类型的是 发布:2025-03-04 17:50:23 浏览:330
电脑访问服务器共享文件没反应 发布:2025-03-04 17:48:58 浏览:92
雅阁2022款买哪个配置好 发布:2025-03-04 17:48:54 浏览:470
pppoelinux 发布:2025-03-04 17:40:31 浏览:668
安卓怎么刷基带 发布:2025-03-04 17:21:51 浏览:84
有什么服务器永久存在 发布:2025-03-04 17:21:43 浏览:686
腾讯视频上传有广告视频 发布:2025-03-04 17:19:33 浏览:664
怎么将资源装载到服务器 发布:2025-03-04 17:00:33 浏览:77
androidapp服务器 发布:2025-03-04 16:59:36 浏览:443
古剑三脚本 发布:2025-03-04 16:48:20 浏览:109