Хорошо, у меня есть 3 устройства.
- микроконтроллер AVR Butterfly, настроенный с помощью USART
- Bifferboard, на котором запущен Debian, с использованием специально созданной программы для последовательного интерфейса.
- Настольный компьютер под управлением Br@y's.
Итак, я пытаюсь заставить Bifferboard отправлять серийный номер в AVR, но AVR никогда не получает сигнал (мы проверили провода). Но если я подключу AVR к настольной коробке и отправлю с Br @ y, он получит просто отлично.
Если я подключу 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;
}
Я также пытался использовать Minicom от Bifferboard - он может общаться с настольным Windows-компьютером, но не с AVR.