Go语言是跨平台的编程语言,其使用goroutine的并发特性可以大幅度提高程序运行效率.静态编译更是减少很多部署难题,现在很多团队都转向Go语言开发一些跨平台的项目
Focas库提供了C语言库,可以使用Go语言调用C函数的机制cgo调用Focas库来采集Fanuc机床信息
首先头部需要引入FOCAS库并配置cgo编译参数
1 | /* |
调用C库的格式如下,需要把变量类型转成C类型
1 | ret := C.cnc_allclibhndl3(C.CString(client.Address), C.ushort(client.Port), C.long(client.Timeout), &client.handle) |
处理C语言结构体的时候,需要使用unsafe库做指针转换,进而读取数据
1 | u := unsafe.Pointer(uintptr(unsafe.Pointer(&obj)) + 4) |
以下是一个完整的demo
1 | package fanuc |