Тема: Странности при общении через COM

написал простенькую программку которая отправляет сообщения на COM, микроконтроллер их считывает и возвращает обратно:

int inMes;// менял на Char не помогает
void setup()
{
  Serial.begin(9600);
}
void loop()
{
  if(Serial.available())
  {
    inMes = Serial.read();
    delay(500);
    Serial.write(inMes);
  }
}

и вроде бы всё должно работать, но микроконтроллер возвращает вообще не те символы которые я ему отслылал.
но если в среде разработки отправить что нить через Serial Monitor, и потом запустить программу то микроконтроллер начинает работать абсолютно правильно.
Объясните пожалуйста в чем проблема?

2 (2010-03-03 17:51:52 отредактировано Динар)

Re: Странности при общении через COM

разобрался, оказывается надо было правильно сконфигурировать  порт

    HANDLE port;
    DCB dcb;
    COMMTIMEOUTS ct;
    port = CreateFile(L"COM6", GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);
    if (port == INVALID_HANDLE_VALUE) 
        cout<<"ошибка при открытии\n";
            else
        cout<<"ok\n";
    GetCommState(port, &dcb);
    GetCommTimeouts(port, &ct);
    ct.ReadIntervalTimeout = MAXDWORD;
    ct.ReadTotalTimeoutConstant = 0;
    ct.ReadTotalTimeoutMultiplier = 0;
    ct.WriteTotalTimeoutConstant = 0;
    ct.WriteTotalTimeoutMultiplier = 0;
    SetCommTimeouts(port,&ct);

    dcb.BaudRate = 9600;
    dcb.DCBlength = 28;
    dcb.EofChar = 4;
    dcb.fBinary = 1;
    dcb.fDtrControl = 1;
    dcb.XoffLim = 512;
    dcb.XonLim = 2048;
    SetCommState(port,&dcb);

3 (2010-03-02 17:25:30 отредактировано seych)

Re: Странности при общении через COM

Очень заинтересовало.
Тестирую работу модулей прошивки в протеусе урезанной ардуины с обвязкой в виде регистров и прочего.
При выводе с виртуальной Atmega168 на встроенный виртуальный терминал вместо ожидаемых символов лезет мусор.
При переборе настроек характер мусора меняется но не более того.
Тоже самое только хуже при построении цепочки Atmega168 > COMPIM(COM2) > virtual-null-modem(COM2-COM4) > HyperTerminal(COM4)
В то время как цепочка  "виртуальный терминал"(COM2) > virtual-null-modem(COM2-COM4) > HyperTerminal(COM4) работает безупречно.
Хардварная Цепочка:    FreeduinoMS > COM1 > HyperTerminal(COM1)  - также безупречно.

Насколько я понял реальная эмулируемая скорость работы Atmega168 под большим вопросом, и естественно падает при усложнении алгоритма и усложнении обвязки. Предполагаю конфликт по baudrate.
Возможно ли урегулировать данную ситуацию?

4

Re: Странности при общении через COM

в моём случае проблема была в правильном конфигурировании порта, твои симптомы похожи на мои