Jump to content

    

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

Передаю и принимаю пакеты через COM порт. Прием и передачу по Rx и Tx осуществляю последовательно.

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

вроде скорость получается около 100 Гц, но если еще принимать, то скорость падает. Использую стандартные fwrite(port, data)  и  fread(port, data)  последовательно, но как бы их вызывать параллельно

чтобы скорость 100 Гц сохранить. Спасибо.

Share this post


Link to post
Share on other sites

Moderator: Простите, а причем тут Matlab?

Share this post


Link to post
Share on other sites
14 hours ago, Rst7 said:

Moderator: Простите, а причем тут Matlab?

%% Cleaning workspace
clear all;
close all;
clc;

%% Data acqusition
% Close all COM ports, if it open
ports = instrfind;
if (~isempty(ports))
    fclose(ports);
    delete(ports);
end

% Setup COM port parameters
pBR       = 38400;
pPORTNAME = '/dev/ttyUSB0';
pBUFFER   = ((16384-2) * 3); % [bytes] Should be agreed with FPGA firmware
pTIMEOUT  = 2 * (pBUFFER / (pBR / 8)); % [sec] Should be agreed with data size & port speed

%% Data acquisition

% Create terminal object
s = serial(pPORTNAME, 'BaudRate', pBR, 'DataBits', 8, 'StopBit', 1, 'Parity', 'none', 'FlowControl', 'none');
% Some setup
s.ByteOrder        = 'BigEndian'; 
s.InputBufferSize  = pBUFFER; 
s.OutputBufferSize = 1024;
s.Timeout          = pTIMEOUT;

try
    fopen(s);
catch
    disp('[Error] Can''t open COM port. Finishing...');
    return;
end

% Sent command to get buffer
fwrite(s,   1)

% Read buffer
disp('Data acquisition...');
[rx_buf, cnt, msg] = fread(s, pBUFFER, 'char');
rx_buf = rx_buf.';
disp(['COM port end code: ' msg]);
disp(['Readed ' num2str(cnt) ' bytes']);
disp('Done');

% Close & clear COM port
fclose(s);
delete(s);

наверное вот при этом))) По вопросу ТС подсказать не могу

Share this post


Link to post
Share on other sites

Оффтоп

Spoiler
On 11/28/2019 at 7:43 PM, des00 said:

наверное вот при этом))) По вопросу ТС подсказать не могу

Вы бы прям ссылочками, ссылочками, на гитлаб =)))

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now