首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SerialPort & CCS字符串通信

SerialPort & CCS字符串通信
EN

Stack Overflow用户
提问于 2014-07-21 19:11:16
回答 2查看 521关注 0票数 6

我试图通过C#发送/接收一个字符串,在C#中我只需要:

代码语言:javascript
复制
SerialPort.WriteLine("A6");

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

代码语言:javascript
复制
 #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#中:

代码语言:javascript
复制
 listBox2.Items.Add(SerialPort.ReadExisting());

我收到无意义的短信,比如:?a?有时:?等等,但有:

代码语言:javascript
复制
listBox2.Items.Add(SerialPort.ReadLine());

当我第一次按下发送"A6“的发送按钮时,我什么也得不到,第二次我也没有感觉到,就像ReadExisting行为一样。

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

代码语言:javascript
复制
#pragma vector = USCI_A1_VECTOR
__interrupt void USCI_A1_ISR(void)
        UCA1TXBUF='A';
        while(!(UCA1IFG & UCTXIFG));  // until UCTXBUF1 is empty
        UCA1TXBUF='6';

我还会在列表框中得到不一致的条目。

然而,如果我这样做:

代码语言:javascript
复制
#pragma vector = USCI_A1_VECTOR
__interrupt void USCI_A1_ISR(void)
UCA1TXBUF=UCA1RXBUF;

我确实在列表框中得到了"A6“,一切都很好(使用ReadLine ReadExisting)!有人能告诉我为什么会这样吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-22 03:09:25

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

票数 1
EN

Stack Overflow用户

发布于 2014-07-22 00:31:31

这表明您不应该在RX中等待TX标志。RX中断例程应该简单地填充FIFO缓冲区(字节队列),以便您可以在其他地方解析它的内容(主例程?),然后在需要时创建响应。

RX ISR的伪代码应该如下所示:

代码语言:javascript
复制
#pragma vector = USCI_A1_VECTOR
__interrupt void USCI_A1_ISR(void)
FIFO_Enqueue(&RxBuffer, UCA1RXBUF);

main()循环的某个地方,您可以解析它的内容:

代码语言:javascript
复制
while (1) 
{
    // find the first occurrence of "A6" and dequeue it
    if (FIFO_StartsWith(&RxBuffer, "A6")
        SendResponse();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24872835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档