基于WebApi實現ModbusTCP數據服務_第1頁
基于WebApi實現ModbusTCP數據服務_第2頁
基于WebApi實現ModbusTCP數據服務_第3頁
基于WebApi實現ModbusTCP數據服務_第4頁
基于WebApi實現ModbusTCP數據服務_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

前言在上位機開發(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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論