好的,所以我有 3 台设备。
- 一个 AVR Butterfly 微控制器,使用 USART 设置
- 一个 Bifferboard,运行 Debian,使用定制的串行程序。
- 一台运行 Br@y's 的台式机。
所以我试图让 Bifferboard 向 AVR 发送串行数据,但 AVR 从来没有收到信号,(我们已经检查了电线)。但是,如果我将 AVR 连接到桌面盒,并使用 Br@y's 发送它就可以接收。
如果我将 Bifferboard 连接到桌面,Br@y 的接收效果会很好。
这是Bifferboard的代码。
#include "string2num.h" //a custom header
#include <cstdlib>
#include <iostream>
#include <SerialStream.h>
using namespace LibSerial;
//using namespace std;
int main(int argc, char*argv[])
{
if (argc<2)
{
std::cout<<argv[0]<<" requires the device name eg \'dev/tty0\' as a parameter\nterminating.\n";
return 1;
}
SerialStream theSerialStream(argv[1]); //open the device
if(!theSerialStream.IsOpen()) //did the device succesfuilly open
{ //open faile
std::cerr<<"Open " << argv[1] << " failed\n Terminating.\n";
return 1; //exit failure
}
theSerialStream.SetVMin(0);//no min number of characters to send
theSerialStream.SetVTime(0);// don't wait betwenn characters
theSerialStream.SetBaudRate( SerialStreamBuf::BAUD_19200);
theSerialStream.SetCharSize(SerialStreamBuf::CHAR_SIZE_8); //8
theSerialStream.SetParity(SerialStreamBuf::PARITY_NONE);// N
theSerialStream.SetNumOfStopBits(1);// 1
theSerialStream.SetFlowControl(SerialStreamBuf::FLOW_CONTROL_NONE);
std::cout<<"Ready for serial trasmission. Press Ctrl+C to quit\n";
//insert basic instructions here
while (1)
{
char input[BUFSIZ];
std::cin>>input;
char* values=getAllValues(input); //DECODE any formatting (this function is in the custom header)
std::cout<<"about to transmit: " << values << "\n";
theSerialStream << values;
free(values);
}
theSerialStream.Close();
return 0;
}
我也尝试过使用 Bifferboard 的 minicom - 它可以与桌面 windows 机器对话,但不能与 AVR 对话。