在Windows2000下用多线程实现1394串行总线通信
p; { pd = p->pdata;
sBuf->next = p->next; file://删除链表sBuf的第一个节点
free(p); file://释放p
QuadletWriteLLC(ATF_First, *pd); file://写第1个Quadlet到ATF
pd++;
for(i=1;i<=WriteCount-2;i++,pd++) file://第2~(WriteCount-1)个Quadlet
QuadletWriteLLC(ATF_Continue, *pd);
QuadletWriteLLC(ATF_ContinueUpdata, *pd); file://第WriteCount个Quadlet
}
m_cs.Unlock(); file://解锁临界资源
}
return 0;
}
本文链接地址:http://www.oyaya.net/fanwen/view/176731.html
sBuf->next = p->next; file://删除链表sBuf的第一个节点
free(p); file://释放p
QuadletWriteLLC(ATF_First, *pd); file://写第1个Quadlet到ATF
pd++;
for(i=1;i<=WriteCount-2;i++,pd++) file://第2~(WriteCount-1)个Quadlet
QuadletWriteLLC(ATF_Continue, *pd);
QuadletWriteLLC(ATF_ContinueUpdata, *pd); file://第WriteCount个Quadlet
}
m_cs.Unlock(); file://解锁临界资源
}
return 0;
}
3.3.4 解释处理程序
解释处理程序实际上是用户自定义的一个消息处理函数,它一直在等待中断处理程序发来的接收到数据包的消息。如果有消息到达,就从rBuf中取出数据包进行解释。如果是自标识包,将接收到的数据放到自标识缓冲区SelfIDbuf中;如果是读请求包,从dataBuf中取出数据,并根据读请求数据包的包头构造相应的读响应包放到sBuf中;如果是写请求包,从rBuf中取出数据部分放到数据缓冲区dataBuf中等待做
进一步的处理,并根据写请求数据包的包头构造相应的写响应包放到sBuf中。
4 结束语
本文针对实际应用中对1394串行总线通信实时性和可靠性的要求 ,采用中断的方法来接收和发送数据,并提出了在Windows2000下运用多线程技术来实现1394串行总线异步通信的方法,有效的解决了在串口通信中出现的数据丢失和不稳定问题,提高了系统的执行效率和资源的利用率,实践证明这是一种有效的途径。
《在Windows2000下用多线程实现1394串行总线通信(第4页)》