版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
前言在上位機開發(fā)過程中,有時候會遇到需要提供數據接口給MES或者其他系統,今天跟大家分享一下,如何在Winform等桌面應用程序中,開發(fā)WebApi接口,提供對外數據服務。為了更好地演示應用場景,本案例以讀取ModbusTCP設備為例,開發(fā)好WeiApi接口后,第三方系統可以通過該接口讀取到設備數據。實現過程1、創(chuàng)建一個Winform程序,設計UI界面如下,主要包括ModbusTCP的設備IP及端口,以及本地WepApi的Http服務及端口:2、實現ModbusTCP連接(1)Nuget搜索xktComm并安裝,便于后續(xù)可以實現ModbusTCP連接(2)建立ModbusTCP連接
privatevoidbtn_Connect_Click(objectsender,
EventArgse)
{
if
(CommonMethods.modbusTcp.Connect(this.txt_DevIp.Text,
this.txt_DevPort.Text))
{
MessageBox.Show("設備連接成功");
}
else
{
MessageBox.Show("設備連接失敗");
}
}(3)斷開ModbusTCP連接
privatevoidbtn_DisConn_Click(objectsender,
EventArgse)
{
CommonMethods.modbusTcp.DisConnect();
}3、創(chuàng)建HttpServer首先通過Nuget搜索這兩個庫,添加一下引用:Microsoft.AspNet.WebApi.ClientMicrosoft.AspNet.WebApi.SelfHostHttpServer主要是對HttpSelfHostServer的封裝,HttpServer類如下:
publicclassHttpServer
{
privateHttpSelfHostServerserver;
publicHttpServer(stringip,
intport)
{
varconfig
=
newHttpSelfHostConfiguration($"http://{ip}:{port}");
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute("DefaultApi",
"api/{controller}/{action}");
server
=
newHttpSelfHostServer(config);
}
publicTask
StartHttpServer()
{
return
server.OpenAsync();
}
publicTask
CloseHttpServer()
{
return
server.CloseAsync();
}
}4、創(chuàng)建Controller創(chuàng)建一個控制器HomeController,以讀取保持寄存器為例,編寫了一個方法可以讀取一個保持寄存器存儲區(qū)數據,代碼如下所示:
publicclassHomeController
:
ApiController
{
[HttpGet]
publicIHttpActionResultReadKeepReg(intaddress)
{
byte[]
res
=
CommonMethods.modbusTcp.ReadKeepReg(address,
1);
return
Json(res[0]*256+res[1]);
}
}5、開啟HttpServer(1)創(chuàng)建HttpServer對象
privateHttpServerhttpServer
=
null;(2)開啟HttpServer服務
privateasyncvoidbtn_Start_Click(objectsender,
EventArgse)
{
try
{
httpServer
=
newHttpServer(this.txt_Ip.Text,
int.Parse(this.txt_Port.Text));
awaithttpServer.StartHttpServer();
MessageBox.Show("開始服務成功");
}
catch
(Exceptionex)
{
MessageBox.Show("開始服務失?。?+ex.Message);
}
}(3)停止HttpServer服務
privateasyncvoidbtn_Stop_Click(objectsender,
EventArgse)
{
try
{
awaithttpServer.CloseHttpServer();
}
catch
(Exceptionex)
{
MessageBox.Show("停止服務失?。?
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 首屆全國茶藝師技能大賽山東預選賽備賽試題及答案
- 第二屆“匠心杯”裝備維修職業(yè)技能大賽(工業(yè)機器人系統操作員S)考試題及答案
- 2024年上門服務項目建議書
- 2024年天文測量儀器項目建議書
- 高中數學北師大版教學目錄
- 五年級下冊北師大版數學知識點梳理與精煉
- 音樂教學心得人教版七年級上冊
- 一年級蘇教版數學求未知數方法
- 蘇教版九年級下冊出師表文學巨著的魅力分析
- 人教版高中化學教育論壇
- 超高鋼筋混凝土半球形穹頂屋面模板施工工法(修改2011.6.20)
- 2022年東奧會計從業(yè)人員繼續(xù)教育試題及答案
- 工程造價全過程控制與管理實施細則
- Visual Basic與數據庫
- 腸癰臨床路徑及診療標準
- 水泥廠設備巡檢標準
- 技術標(鋼構投標模板)
- 全費用綜合單價分析表(清單子目)
- 洗車崗位考核標準
- 滾柱式超越離合器的設計
- 稱謂、書信中的禮儀(第七、八篇)
評論
0/150
提交評論