1
#include <fcntl.h>
#include <sys/ioctl.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>
#include <ioctl.h>
#include <apbuart.h>
#include <rtems.h>
#include <drvmgr/drvmgr.h>
#include <unistd.h>
#define size 1024
#define APBUART_databits 8

int writetoport(int fd, char *b, size_t count)
{
    if(!write(fd, &b[0], sizeof(count)))
        {
        //printLastError();
        return -1;
        }
        return 1;
}

int main()
{
        char a[size] = {'h','e','l','l','o'};
        int fd;
        fd = open("/dev/apbuart2", O_WRONLY );
        ioctl(fd, APBUART_SET_BAUDRATE, 9600);
        ioctl(fd, APBUART_START, NULL);
        ioctl(fd, APBUART_STOP, 1);
        ioctl(fd, APBUART_databits, 8);
        writetoport(fd, &a[size], sizeof(a));
        return 0;
}

私は Aeroflex Gaisler (leon2 プロセッサを搭載した RTEMS) に取り組んでいます。UART インターフェイスを介して文字を送信しようとしています。しかし、私は文字を送ることができません。以下はコード行です。

#include <fcntl.h>
#include <sys/ioctl.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>
#include <ioctl.h>
#include <apbuart.h>
#include <rtems.h>
#include <drvmgr/drvmgr.h>
#include <unistd.h>
#define size 1024
#define APBUART_databits 8

int writetoport(int fd, char *b, size_t count)
{
    if(!write(fd, &b[0], sizeof(count)))
        {
        //printLastError();
        return -1;    
        }
    return 1;
}

int main()
{
        char a[size] = {'h','e','l','l','o'};
        int fd;
        fd = open("/dev/apbuart2", O_WRONLY );
        ioctl(fd, APBUART_SET_BAUDRATE, 9600);
        ioctl(fd, APBUART_START, NULL);
        ioctl(fd, APBUART_STOP, 1);
        ioctl(fd, APBUART_databits, 8);

        writetoport(fd, &a[size], sizeof(a));
        return 0;    
} 

返信に基づいてコードを変更しましたが、それも機能しません。

4

3 に答える 3