16,815
社区成员




#ifdef __cplusplus
extern "C" {
#endif // __cplusplus
...
#ifdef __cplusplus
}
#endif // __cplusplus
2.在QT工程配置文件下,要添加自己编译的接口的库的路径,否则链接的时候会报错。key=ftok(IPC_KEY_PATH, DISP_BLDC_MSG_PROJ_ID);//建立ipc通信
if(key==-1)
{
perror("comm_if:cannot generate IPC key");
exit(1);
}
DPRINTF("proj_id %d key %d\n",DISP_BLDC_MSG_PROJ_ID,key);
msqid=msgget(key,IPC_CREAT|0777);
if(msqid == -1)
{
perror("comm_if:cannot create message queue");
exit(1);
}
以上是定义,定义之后,便可以发送消息了:
msgsnd(msqid, &msg_info, (sizeof(bldc_msg_t) - sizeof(long)),0);
如上是发送消息,那么在Qt这边的代码里,可以创建一个线程类,线程run起来之后,使用一个while循环,监听从串口传过来的消息:
void msgthread::run() {
while(1) {
if((n = msgrcv(mid,&msg,(sizeof(bldc_msg_t)-sizeof(long)),BLDC_DISP_MSG_TYPE,IPC_NOWAIT)) != -1 ) {
.............处理函数.........
}
}
}