【OK210试用体验】项目篇+物联仓库管理系统+前端数据中心 +控制M0命令发送模块 09 - 在线问答 - 电子技术论坛 - 最好最受欢迎电子论坛!

【OK210试用体验】项目篇+物联仓库管理系统+前端数据中心 +控制M0命令发送模块 09

himol ( 楼主 ) 2015-10-24 10:33:49  只看该作者 倒序浏览
第九节M0命令发送控制
1. 功能描述
发送接收到的M0控制命令.
2. 数据描述
数据类型
数据名称
功能
unsigned char
dev_uart_mask
接收到的需要发出的命令
int
dev_uart_fd
串口设备描述符
pthread_cond_t
cond_uart_cmd
串口发送命令模块被唤醒条件
pthread_mutex_t
mutex_uart_cmd
串口发送命令模块互斥锁
dota_cache_list
dota_cache_list
发送命令链表缓存头结点
m0_cache_tail
发送命令链表缓存尾结点
3. 流程图


4. 代码
#include "data_global.h"
extern unsigned char dev_uart_mask;
extern int dev_uart_fd;
extern pthread_cond_t cond_uart_cmd;
extern pthread_mutex_t mutex_uart_cmd;
extern dota_cache_list m0_cache_head, m0_cache_tail;
void *pthread_uart_cmd (void *arg)
{
        unsigned char *uart_p = NULL;
        dota_cache_list uart_cache_p = NULL;
        printf ("pthread_uart_cmd is okn");
        while (1)
        {
                pthread_mutex_lock (&mutex_uart_cmd);
                pthread_cond_wait (&cond_uart_cmd, &mutex_uart_cmd);
                while ((uart_cache_p = GetCacheNode (m0_cache_head, &m0_cache_tail)) != NULL)
                {
                        pthread_mutex_unlock (&mutex_uart_cmd);
                        uart_p = (unsigned char *)uart_cache_p->data;
                        dev_uart_mask = *uart_p;
                        write (dev_uart_fd, &dev_uart_mask, 1);
                        free (uart_p);
                        uart_p = NULL;
                        free (uart_cache_p);
                        uart_cache_p = NULL;
                        usleep (200000);
                        pthread_mutex_lock (&mutex_uart_cmd);
                }
                pthread_mutex_unlock (&mutex_uart_cmd);
        }
}

0个回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则


关闭

站长推荐上一条 /5 下一条

小黑屋|手机版|Archiver|电子发烧友 ( 湘ICP备2023018690号 )

GMT+8, 2024-5-13 15:52 , Processed in 0.395044 second(s), Total 37, Slave 27 queries .

Powered by 电子发烧友网

© 2015 bbs.elecfans.com

微信扫描
快速回复 返回顶部 返回列表