刚开始接触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);
}
}
用了两个线程,分别进行上行数据的转发和下行数据的转发,即等待收到数据,读取数据,转发数据;再等待接收数据……依次类推。可以看出,目前没有使用任何缓冲机制。
所以请教各位,对于我的这样一个功能,使用什么缓冲机制比较有效?另外,完成这个功能,使用线程好还是使用进程好?