Nano Hash - криптовалюты, майнинг, программирование

Попытка отправить данные через последовательный порт

Я пытаюсь использовать связь через последовательный порт для отправки данных через xBee, но это не работает, и я не знаю, почему. Он не запускается, пишет, что не может запустить программу и "Система не может найти указанный файл". Я был бы признателен, если бы кто-то мог мне помочь.

Вот код, который я использую для проверки:

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <commdlg.h>
#include <windows.h>

int main()
{
    DCB dcb;
    HANDLE hCom;
    BOOL fSuccess;
    COMMTIMEOUTS timeouts;
    char *buffWrite;
    DWORD dwBytesWritten = 0;

    hCom = CreateFile( L"COM9",
                    GENERIC_WRITE,
                    0,    // must be opened with exclusive-access
                    NULL, // no security attributes
                    OPEN_EXISTING, // must use OPEN_EXISTING
                    FILE_ATTRIBUTE_NORMAL,    // not overlapped I/O
                    NULL  // hTemplate must be NULL for comm devices
                    );

    if (hCom == INVALID_HANDLE_VALUE) 
    {
        // Handle the error.
        printf ("CreateFile failed with error %d.\n", GetLastError());
        return (1);
    }

    // Build on the current configuration, and skip setting the size
    // of the input and output buffers with SetupComm.

    fSuccess = GetCommState(hCom, &dcb);

    if (!fSuccess) 
    {
        // Handle the error.
        printf ("GetCommState failed with error %d.\n", GetLastError());
        return (2);
    }

    // Fill in DCB: 9,600 bps, 8 data bits, no parity, and 1 stop bit.

    dcb.BaudRate = CBR_9600;     // set the baud rate
    dcb.ByteSize = 8;             // data size, xmit, and rcv
    dcb.Parity = NOPARITY;        // no parity bit
    dcb.StopBits = ONESTOPBIT;    // one stop bit

    fSuccess = SetCommState(hCom, &dcb);

    if (!fSuccess) 
    {
        // Handle the error.
        printf ("SetCommState failed with error %d.\n", GetLastError());
        return (3);
    }

    GetCommTimeouts(hCom,&timeouts);
    //COMMTIMEOUTS timeouts = {0};

    timeouts.ReadIntervalTimeout = MAXDWORD;
    timeouts.ReadTotalTimeoutConstant = 0;
    timeouts.ReadTotalTimeoutMultiplier = 0;
    timeouts.WriteTotalTimeoutConstant = 1000;
    timeouts.WriteTotalTimeoutMultiplier= 10;

    if(!SetCommTimeouts(hCom, &timeouts)) 
    {
        printf("error setting port state \n");
    }

    buffWrite = "Testing Serial Port!";

    if (WriteFile(hCom,   // handle to file to write to
                buffWrite,              // pointer to data to write to file
                sizeof(buffWrite),              // number of bytes to write
                &dwBytesWritten,NULL) == 0)      // pointer to number of bytes written
            {
                printf("Reading of serial communication has problem.");
                return FALSE;
            }

    CloseHandle(hCom);
}

Благодарю вас. Джек.

17.09.2013

  • Ни один из ваших кодов не имеет значения, пока вы не убедите операционную систему найти нужный вам исполняемый файл. Совершенно непонятно, как вы его запускаете и какие у вас могут быть DLL-зависимости. Используйте утилиту SysInternals ProcMon для диагностики. 17.09.2013
  • Ошибка с сообщением CreateFile failed with error... ? 17.09.2013

Ответы:


1

Я собираюсь на мгновение предположить, что вопрос, опубликованный @rm5248, уместен, и что вы говорите о программе, скомпилированной из кода, который вы разместили, с ошибкой CreateFile failed with error The system cannot find file specified.

Поэтому наиболее вероятной причиной является то, что COM-порт, который вы открываете, не существует. Если вы используете Windows, используйте командную строку и MODE | MORE, в котором будут перечислены доступные COM-порты в вашей системе. Обратите внимание, что COM-порты не отображаются в этом списке, если они используются.

Как только вы узнаете, какие порты у вас есть, измените строку в вашем коде hCom = CreateFile( L"COM1",

18.09.2013
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..