python 代码如下
import ctypes
import time
dll = ctypes.cdll.LoadLibrary('thinkgear')#cdll different windll
dllVersion = dll.TG_GetDriverVersion();
print(dllVersion)
connectionId = dll.TG_GetNewConnectionId();
print(connectionId)
errCode = dll.TG_SetStreamLog(connectionId, "streamLog2.txt" );
#print(errCode)
errCode = dll.TG_SetDataLog(connectionId,"dataLog2.txt" );
comPortName = ctypes.c_char_p()
comPortName = "\\\\.\\COM5";
errCode = dll.TG_Connect(connectionId,comPortName,9600,0);
print errCode,'connection susser'
packersRead = 0
while 1:
errCode = dll.TG_ReadPackets(connectionId,1)
if errCode ==1 and dll.TG_GetValueStatus(connectionId,2)!=0:
print dll.TG_GetValue(connectionId, 5),dll.TG_GetValue(connectionId, 6),dll.TG_GetValue(connectionId, 9)
packersRead = packersRead + 1
if packersRead>50:
break
dll.TG_Disconnect(connectionId)
dll.TG_FreeConnection(connectionId)
C 代码如下
#include <Windows.h>
#include <stdio.h>
#include "thinkgear.h"
void wait()
{
system("pause");
}
int main()
{
char *comPortName = NULL;
int dllVersion = 0; // 动态库版本
int connectionId = 0; // 连接 ID
int packetsRead = 0; // 包数量
int errCode = 0; // 错误码
/* 获取动态库版本 */
dllVersion = TG_GetDriverVersion();
printf( "ThinkGear DLL version: %d\n", dllVersion );
/* 获取连接 ID */
connectionId = TG_GetNewConnectionId();
if( connectionId < 0 )
{
printf("ERROR: TG_GetNewConnectionId() returned %d.\n",
connectionId );
wait();
exit( EXIT_FAILURE );
}
/* 原始数据日志 */
errCode = TG_SetStreamLog( connectionId, "streamLog.txt" );
if( errCode < 0 ) {
printf("ERROR: TG_SetStreamLog() returned %d.\n", errCode );
wait();
exit( EXIT_FAILURE );
}
/* ThinkGear 数据日志 */
errCode = TG_SetDataLog( connectionId, "dataLog.txt" );
if( errCode < 0 ) {
printf("ERROR: TG_SetDataLog() returned %d.\n", errCode );
wait();
exit( EXIT_FAILURE );
}
/* 准备连接的 COM 口 */
comPortName = "\\\\.\\COM5"; // \\.\COM3
errCode = TG_Connect( connectionId,
comPortName,
TG_BAUD_9600,
TG_STREAM_PACKETS );
if( errCode < 0 ) {
printf("ERROR: TG_Connect() returned %d.\n", errCode );
wait();
exit( EXIT_FAILURE );
}
/* 不停的读取数据 */
packetsRead = 0;
while(1/* packetsRead < 10*/ )
{
//Sleep(50);
/* 读一个报文 */
errCode = TG_ReadPackets( connectionId, 1 );
/* 如果这个报文读取成功 */
if( errCode == 1 )
{
int detla,theta,beta1;
if(( errCode = TG_GetValueStatus(connectionId, TG_DATA_ATTENTION)) != 0 )
{
detla = TG_GetValue(connectionId, TG_DATA_DELTA);
theta = TG_GetValue(connectionId, TG_DATA_THETA);
beta1 = TG_GetValue(connectionId, TG_DATA_BETA1);
printf("delta = %d, theta=%d, beta1=%d\n", detla, theta, beta1);
}
}
else
{
printf("ReadPackets:errcode=%d\n", errCode);
Sleep(1000);
}
}
/* 释放连接 */
TG_FreeConnection( connectionId );
/* End program */
system("pause");
return( EXIT_SUCCESS );
}
C 要用到的头文件在这https://git.oschina.net/blacklin/codes/74tlbowzdy9fm1h8uq32r16
我觉得可能是 python 的问题,但是就是不知道问题在哪。。。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.