各位大大好
我有個需求,我們有購入一個設備,他有開放二次開發(可用C,C#,C++,JAVA),讓我們開發系統去控制他
但現在有個問題,主管們希望軟體要用網頁去開發呈現(網頁只會跑區網)
如果依這個為前提下
那我初步想法是可以用javascript去執行用C,C#,C++,JAVA開發出來的exe,然後再透過這exe去控制設備
但是要考慮到,網頁執行exe時要如何帶入參數
我有搜尋一下google,雖然說因為安全性問題所以不建議,不過我這網頁是只會跑內部區網,所以安全性不是問題
而我測試幾個網路找到的範例,都只能用IE執行,也不知道執行時,要怎樣帶入參數
所以不知道這方法可不可行,各位大大是否願意給個方向
謝謝
補充
架構大概是這樣
設備→連線電腦(上面有安裝設備商的控制軟體,控制軟體有提供二次開發dll或api)
我們只要使用設備商控制軟體提供二次開發dll或api就可以間接控制設備或取回設備裡面資料
但是他們只提供C,C#,C++,JAVA的方法
其實如果不限制使用網頁,我用C#開發成exe執行檔,載入設備商提供的DLL或使用他提供二次開發的協定,就可以達到功能,可是現在主管希望操作介面是用網頁的方法(有些其他功能的考量),所以我才會有所困饒
這部分我剛好有實作過,微軟有提供一個 SignalR 的元件,它是一個 web socket wrapper,可以在 Web、Desktop 程式呼叫 SignalR,達成 Web、Exe 雙向溝通的功能。請參閱 https://docs.microsoft.com/en-us/aspnet/signalr/overview/guide-to-the-api/hubs-api-guide-server。
謝謝大大,我會測試看看這方法的
http://blog.darkthread.net/post-2012-07-10-signalr-remote-controller.aspx
這篇有介紹 SignalR 實現遠端程式遙控,使用 ASP.NET MVC 和 Console 程式溝通。
如果網頁是放在IIS上,就直接用C#處理就好,不需要用javascript
大大好,那請問後端是用PHP也可以做到嗎?
PHP也是後端語言, 能做到的功能跟C#差不多
用C#開發成exe執行檔,這段改用網頁做,就是用PHP去寫你c#的邏輯,或是用PHP去呼叫C#開發的exe執行檔,兩種方式,自已選吧,如果能用c#開發出exe執行檔,要改用網頁寫也沒什麼困難的,只是要去了解一下PHP語法怎麼寫罷了,另外要透過api的方式(exe+api+php),有點多此一舉,除非你的架構之後會需要更大的彈性,不然前兩種方式很足夠了~
https://stackoverflow.com/questions/13446492/run-a-exe-with-input-parameters-from-php-web-page
是在server端執行設備嗎?
是的話php能直接執行外部命令啊。
http://eeepage.info/php-system-exec-passthru/
大大好;是在client端執行網頁,也就是好幾台設備,各自有電腦,各自開啟網頁後,控制自己電腦所連線的設備,最後還要從設備取回資料存回資料庫
那你這個根本不用網頁啊?
1.寫個程式去控制client執行設備
2.將資料送回資料庫
何必拘泥於瀏覽器?現在瀏覽器因為安全性的原因,要做到這個很難。
你不把你主管為何一定要網頁的原因寫出來,我想很難給你容易達成的建議。
會不會是... client 端執行瀏覽器看 server 的網頁但是要能控制client 端的機器?
後端語言是在server端執行, 應該不能操控client端.
如果真的要操控client端, 應該要用單機程式.
現在就是不知道他的後端語言到底在 client 還是另有 server
以及上面提的, 到底為什麼要網頁...
謝謝大大們的建議,其實使用網頁有幾個原因
1.主管在國外展覽看過用網頁成功案例,有給我看過當時錄下的影片,我看到網址的網頁檔是php,但是沒說怎樣做到的,所以我一時不知怎樣回報說用網頁做不到。
2.系統還會使用到其他網頁報表套件或行事曆套件,可以不用再重新開發
所以應該沒有絕對,只是先問問看如果以網頁為前提,是否有解
我舉例一下我們的想法
總公司人員設計一枝筆,假設有三個製程,筆蓋(使用機台A)→筆身(使用機台B)→筆芯(使用機台C),並設定好一些機台運作基本參數
工廠端打開系統,可以看到有這三個流程,就可以知道現在做到哪個階段,一些機台參數直接在網頁按確定就可以載入加工軟體,完成後會再回傳資料
也就是說你們現在公司有個內部網頁系統, 想要把新的機台透過這個網頁系統做控制及監看狀態
如果他們提供的軟體 api 可以從別的電腦連接過來, 你可以在 web server 上面寫個 agent 一邊跟網頁回報與接受指令, 一邊執行收到的指令控制機台
如果 api 只允許跟機台放在同一台機器, 那你就得在連接機台的各電腦上都有個 agent 做上面講的事情
大概是這樣?
其實如果只是單純要從網頁獲取資料的話,可以自已先寫個c#做輸出文件檔或是json檔。再搭配排程處理。
網頁再單純的去獲取這些資料就好。
但還看到需要做一些控制的話。一般如果你已經會運行exe但不知道該如何傳參數的情況。
你也可以考量使用bat。只是這招也只限於參數單一化。
最好還是架個後端程式的環境,windows的話就還是使用asp來處理好了。
再利用其後端語言的命令函數來運行你要的程式就可以了。
要不然,直接用jsp來配合java。這樣更好更快,反正它不是有支援java了。
應該,要想網頁是顯示,機台狀態、機台資訊...等,網頁是負責,將訊號命令寫給(DB、伺服機)
伺服機直接對接機台,
伺服機使用API去控制機台
不然您要考慮的,client端執行網頁 是否有連到 機台,是連哪個機台
A client ==>A 機台
B client ==>B 機台
結果 B client 開啟的瀏覽器是A 機台資訊,Javascript,Java Applet... 還要去確認...等太麻煩了