c# - 串行端口和 CCS 字符串通信

标签 c# file-transfer

我正在尝试通过 C# 发送/接收字符串,在 C# 中我只是这样做:

SerialPort.WriteLine("A6");

但在 CCS 中,如果我尝试在 char 之后发送一个字符串 char,它根本不起作用,无论是使用 ReadLine 还是使用 ReadExisting!这就是我尝试创建一个数组的方法,这样每次我们输入 RXBUFF pragma 时,我们都会将接收到的字符添加到数组中,直到数组已满(我随机定义数组大小为 2,这意味着我们处理 2 -char-length strings), 并最终通过在 char 之后发送 char 来发送字符串:

 #pragma vector = USCI_A1_VECTOR
__interrupt void USCI_A1_ISR(void)

if(__even_in_range(UCA1IV,18) == 0x02){          // Vector 2 - RXIFG
    if(counter==0)
    {
        Data[0]=UCA1RXBUF;
        counter++;
    }
    else
    {
        Data[1]=UCA1RXBUF;
        counter=0;
        UCA1TXBUF=Data[0];
        while(!(UCA1IFG & UCTXIFG)); // until UCTXBUF1 is empty
        UCA1TXBUF=Data[1];
    }
}

在 C# 中:

 listBox2.Items.Add(SerialPort.ReadExisting());

我收到无意义的文字,例如:??A???有时:????A?等..,但有:

listBox2.Items.Add(SerialPort.ReadLine());

第一次按下发送“A6”的发送按钮时,我什么也没得到,第二次我也变得毫无意义,就像 ReadExisting 行为一样。

顺便说一句,即使我尝试以最简单的方式发送字符串(没有数组和条件),我的意思是这样的:

#pragma vector = USCI_A1_VECTOR
__interrupt void USCI_A1_ISR(void)
        UCA1TXBUF='A';
        while(!(UCA1IFG & UCTXIFG));  // until UCTXBUF1 is empty
        UCA1TXBUF='6';

我在列表框中也得到了不一致的项目。

但是,如果我这样做:

#pragma vector = USCI_A1_VECTOR
__interrupt void USCI_A1_ISR(void)
UCA1TXBUF=UCA1RXBUF;

我确实在列表框中得到“A6”并且一切正常(使用 ReadLine ReadExisting)! 谁能告诉我为什么会这样?

最佳答案

我刚刚取消了奇偶校验位,现在一切正常,谢谢大家!

关于c# - 串行端口和 CCS 字符串通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24872835/

相关文章:

c# - 如何使用 JQuery 取消选中 GridView 中的所有单选按钮?

c# - 我将如何使用 C# 搜索范围内的值

networking - 为什么不使用UDP进行视频点播会引起串扰?

使用串口的嵌入式Linux文件传输(也用于shell)

java - 使用 USB 将 Android 传输到 PC

Java - 尝试创建简单的文件传输服务时遇到问题

c# - 如何更改所有控件的 MetroFramework 样式颜色

javascript - awesomium 网络抓取某些部分

java - 有没有办法根据电话号码从电话中获取 WAN IP 地址?

c# - 在 C# 中将 DataTable 转换为 List<T>