2 回答

TA貢獻1797條經驗 獲得超6個贊
不知道題主的web server和硬件之間能夠通過什么方式連接,我想有以下這幾種情況。
如果是在同一臺機器上的直接調用C函數或者動態庫即可。
如果是通過串口連接,server將命令通過串口發送給設備,設備接收串口數據,然后實現相應的功能。
如果通過網絡連接,server和設備之間可以保持一個長連接,server通過socket將數據發送到設備。

TA貢獻1848條經驗 獲得超6個贊
不太明白你的通信指啥子。我假設你的意思是Go和C通過內存互相傳遞變量是么?引申下就是Go調用C函數了是么?
摘抄自:CSDN-關于go語言
從Go調用C/C++:Rob Pike的GC
package里有一個工具叫cgo,可以讓Go程序調用標準C程序。另一個更現實的路子是:SWIG從2.0版本開始支持Go,讓Go程序能調用C/C++程序。如果用SWIG
+ Rob Pike的GC,那么可以把C/C++程序編譯成一個shared library,然后Go程序在運行的時候鏈接之。但是在寫分布式計算程序的時候,我們經常希望用靜態鏈接——這樣executable
binary file雖然較大,但是不需要實現在機群中每臺機器上保證部署相同版本的動態鏈接庫。這種需求需要用 SWIG + Ian
Taylor的gccgo編譯器。我在32bit的Ubuntu Linux和64bit的SUSE Linux上都成功的編譯了剛剛發布的GCC
4.6(其中包含gccgo),并且實驗了SWIG + gccgo的方法。
節選自:具體請打開該文章詳細看看開源中國-Go和C如何共享內存資源
Go語言的cgo技術允許在Go代碼中方便的使用C語言代碼. 基本的用法如下:
package rand/* #include <stdlib.h> */import "C"func Random() int { return int(C.random()) }func Seed(i int) { C.srandom(C.uint(i)) }其中"C"是導入一個虛擬的包, 用于引用C語言的符號.
- 2 回答
- 0 關注
- 1323 瀏覽
添加回答
舉報