Проблема связи через последовательный порт из c # в приложение c - PullRequest
0 голосов
/ 11 октября 2018

Я пишу приложение c#, которое связывается с приложением c устройства.Я пытаюсь записать данные из приложения c# в приложение c через последовательный порт и наоборот.

Я пытаюсь записать некоторые примеры данных, используя следующий код.
C #

using PORT = System.IO.Port.SerialPort;
PORT p = new PORT("COM4", 9600, System.IO.Ports.Parity.None, 8, System.IO.Ports.StopBits.One);
string data="HELLO";
//String to byte[] conversion
byte[] byt_buff = new byte[data.Length];
byt_buff = Encoding.ASCII.GetBytes(data);
p.Open();
p.DiscardOutBuffer();
p.Write(byt_buff, 0, byt_buff.Length);
p.Close();

Приложение c, работающее на устройствеимеет следующий код.
C

#include<stdio.h>
#include <poll.h>
#include <sys/types.h>
#include <fcntl.h>
#include <unistd.h>
#include<stdint.h>  
#include<string.h>

#define USB_DEV_NODE           "usb.dat"
#define MAX_SIZE    20

int main()
{

int fd;
int ret_poll;
int ret_read;
struct pollfd pollfd;
char buf[MAX_SIZE];
int i = 0;

pollfd.events = POLLIN;

fd = open(USB_DEV_NODE, O_RDWR | O_NOCTTY);

pollfd.fd = fd;

while (1)
{
    ret_poll = poll( &pollfd, 1, -1);
    if( ret_poll == -1 )
    {
        printf("Gpio_poll poll failed\r\n");
        close(fd);
    }else{
       if (pollfd.revents & POLLIN )
        {
            ret_read = read(fd, buf, MAX_SIZE);
    buf[ret_read]=0;
            if(ret_read > 0)
            {


               for(i=0;i<ret_read ; i++)
                {
                    printf("BUF[%d]=%c\n",i,buf[i]);

                }

            }
        }
    }
}

return 0;
}


Но мне не удается получить данные, записанные как byte[], данные не получены.Вместо этого, если я запишу данные как string, используя p.WriteLine ("HELLO"); , они будут получены.
Пожалуйста, помогите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...