PlainJi 2014-05-04 12:23 采纳率: 50%
浏览 901

linux系统下缓冲机制问题

刚开始接触linux系统,所问问题可能小白,还望见谅。

最近再做一个CAN转以太网的网关,也就是CAN总线收到数据,通过以太网转发出去;以太网收到数据,通过CAN总线转发出去。

硬件用的是atmel的arm9处理器,软件用的是linux操作系统。现在的进展是CAN总线和以太网的收发都已经ok了。代码如下:

void SendUp()
{
while(1)
{
CAN_Receive();
LoadMessage();
TCP_Write(UpMessageBuf,MessageLength);
}
}

void SendDown()
{
int TcpReceiveBytes=0;
while(1)
{
TcpReceiveBytes=TCP_Read(DownMessageBuf);
DownMessageBuf[TcpReceiveBytes]=0;
printf("TCP Receive %d bytes:%s\n",TcpReceiveBytes,DownMessageBuf);
CAN_Send(DownMessageBuf,TcpReceiveBytes);
}
}

用了两个线程,分别进行上行数据的转发和下行数据的转发,即等待收到数据,读取数据,转发数据;再等待接收数据……依次类推。可以看出,目前没有使用任何缓冲机制。

所以请教各位,对于我的这样一个功能,使用什么缓冲机制比较有效?另外,完成这个功能,使用线程好还是使用进程好?
  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 高德地图点聚合中Marker的位置无法实时更新
    • ¥15 DIFY API Endpoint 问题。
    • ¥20 sub地址DHCP问题
    • ¥15 delta降尺度计算的一些细节,有偿
    • ¥15 Arduino红外遥控代码有问题
    • ¥15 数值计算离散正交多项式
    • ¥30 数值计算均差系数编程
    • ¥15 redis-full-check比较 两个集群的数据出错
    • ¥15 Matlab编程问题
    • ¥15 训练的多模态特征融合模型准确度很低怎么办