我正在接口(RS232)上進行aeroflex gaisler硬件(RTEMS操作系統和leon2處理器)與桌面終端之間的通信。我已經編寫了一個用於它們之間通信的代碼。我在所有函數調用中遇到錯誤,如果有人遇到過這種問題,請幫我解決它。幫助我找到錯誤
注意:這個錯誤是不同於我以前的問題。
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <ioctl.h>
#include <apbuart.h>
#include <rtems.h>
#include <drvmgr/drvmgr.h>
#ifndef serial_h
#define serial_h
#include "serial-com.h"
#endif
//#ifndef read_serial_h
// #define read_serial_h
// #include "read-serial.h"
//#endif
#ifndef memory_h
#define memory_h
#include "memory.h"
#endif
#define BUFSIZE 500
void readSerialPort(char portname, char tbuffer[8])
{
char fd;
// create a new handle for the serial com port
fd = createSerialPort("portname", DWORD accessdirection); // function call
// set the configuration of the handle
setComPortConfig(fd);
// set the timeout configuration of the handle
setComPortTimeouts(fd);
char TBuffer[BUFSIZE];
sprintf(TBuffer,"%c",tbuffer);
char nread = strlen(TBuffer);
readFromSerialPort(fd, TBuffer, nread);
// read from terminal.
// // create a new char buffer
// //char outputBuffer[BUFSIZE];
// int h1, h2, h3 ;
//
//
// // copy the two value in the outputbuffer
// // the ";" is used a delimiter
// // copy the two value in the outputbuffer
// // the ";" is used a delimiter
// sscanf(EF->a,"%d\n",&h1);
// sscanf(EF->b,"%d",&h2);
// sscanf(EF->c,"%d\n",&h3);
//
// // compute the actual size of the output string
// int nread1 = strlen(EF->a);
// int nread2 = strlen(EF->b);
// int nread3 = strlen(EF->c);
// write the outputBuffer to the serial com port
// readFromSerialPort(hSerial, EF->a, nread1);
// readFromSerialPort(hSerial, EF->b, nread2);
// readFromSerialPort(hSerial, EF->c, nread3);
// close the handle
CloseHandle(fd);
}
身體的功能:像
char createSerialPort("portname", DWORD accessdirection)
{
// HANDLE hSerial = CreateFile(portname,
// accessdirection,
// 0,
// 0,
// OPEN_EXISTING,
// 0,
// 0);
char fd = CreateFile("/dev/rastaio0/apbuart1", GENERIC_READ | GENERIC_WRITE); // create = open
if (fd == INVALID_HANDLE_VALUE) {
//call GetLastError(); to gain more information
}
return hSerial;
}
錯誤: DWORD未初始化 GENERIC_READ | GENERIC_WRITE未初始化 訪問方向未初始化
我對函數調用和函數體有疑問。給我一些想法。
我們應該如何知道問題出在哪裏,當你不包括你得到的錯誤? – unwind
'fd = createSerialPort(「portname」,DWORD accessdirection)''行有問題。您應該傳遞'accessdirection'參數(即刪除DWORD並初始化accessdirection),或者根本不使用第二個參數。 – Inspired
嗨放鬆!現在你可以看到錯誤 –