當前位置:首頁 » 操作系統 » 上位機源碼

上位機源碼

發布時間: 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();
}


}

}
熱點內容
絕對賽車3安卓在哪裡下載 發布:2025-02-01 12:42:30 瀏覽:715
mysql修改資料庫字元 發布:2025-02-01 12:37:52 瀏覽:566
阿里雲伺服器出廠密碼是多少 發布:2025-02-01 12:35:43 瀏覽:664
手機傳文件伺服器和ip地址 發布:2025-02-01 12:15:01 瀏覽:657
兒子編程課 發布:2025-02-01 12:15:00 瀏覽:900
zsh腳本 發布:2025-02-01 12:13:48 瀏覽:595
android亮度獲取 發布:2025-02-01 12:09:10 瀏覽:624
小孩什麼時候學編程比較好 發布:2025-02-01 12:03:10 瀏覽:960
c語言的認識 發布:2025-02-01 11:58:03 瀏覽:520
svn連接伺服器地址 發布:2025-02-01 11:51:31 瀏覽:416