将matlab代码转换为c#,串行端口问题

将matlab代码转换为c#,串行端口问题,c#,matlab,encoding,serial-port,C#,Matlab,Encoding,Serial Port,关于matlab和c#,我有一些问题。我想做的是把我从matlab得到的一段代码带到c#。问题是,每当我阅读serialport时,matlab中的数据都很好,一切正常,但c#完全把它搞砸了,我不知道为什么 关于这个问题,这里有一些代码片段,我认为它们很重要,还有我对c#的“翻译”: 这是我打开串口的代码。我知道如果端口上有任何数据丢失,if close就会关闭,但这不应该是一个问题,因为在我的情况下,数据总是在那里 MATLAB: if ~isempty (instrfind) fcl

关于matlab和c#,我有一些问题。我想做的是把我从matlab得到的一段代码带到c#。问题是,每当我阅读serialport时,matlab中的数据都很好,一切正常,但c#完全把它搞砸了,我不知道为什么

关于这个问题,这里有一些代码片段,我认为它们很重要,还有我对c#的“翻译”:

这是我打开串口的代码。我知道如果端口上有任何数据丢失,if close就会关闭,但这不应该是一个问题,因为在我的情况下,数据总是在那里

MATLAB:

if ~isempty (instrfind)
    fclose (instrfind);
end
s = serial('COMPort4',...
    'BaudRate', 56000,...
    'Parity', 'none',...
    'DataBits', 8,...
    'StopBits', 1,...
    'InputBufferSize', 65552,...
    'OutputBufferSize', 32768,...
    'Terminator','CR',...
    'Timeout', 2);
fopen(s);
Ndiv=['set_Ndiv ',num2str(PLL_22)]
fprintf(s,Ndiv);  
C#:

接下来,我将使用某些命令通过serialport与控制器通信 其中使用了某些变量。下面是一个命令,如果我没有做错什么,我将通过serialport发送相同的命令:

MATLAB:

if ~isempty (instrfind)
    fclose (instrfind);
end
s = serial('COMPort4',...
    'BaudRate', 56000,...
    'Parity', 'none',...
    'DataBits', 8,...
    'StopBits', 1,...
    'InputBufferSize', 65552,...
    'OutputBufferSize', 32768,...
    'Terminator','CR',...
    'Timeout', 2);
fopen(s);
Ndiv=['set_Ndiv ',num2str(PLL_22)]
fprintf(s,Ndiv);  
C#:

之后,我从串行端口读取数据。然而,matlab中的结果是大量的数字,如32534、31534等,但在c中,我得到了一个奇怪的组合??332/u??????\u011????或者类似的东西。我想你明白我的意思了。但是,下面是我如何读取serialport的代码:

Matlab:

for n = 1:10000
    fprintf(s,'go');
    data= fread(s,100,'uint16');
end
C#:


对于(int i=1;i测试波特率,我一直使用中列出的波特率。似乎您在编码方面有问题。请尝试手动读取字节,然后对其进行解码。您好,我不知道这到底是如何工作的。您是否有一个自动或指南来说明如何执行此操作,或者具体的编码是什么?
for(int i=1; i<=10000; i++)
{
    radarCom.WriteLine("go");

    if (radarCom.BytesToRead != -1)
    {
        var data = radarCom.ReadExisting();
        Console.WriteLine(data);
    }
}