This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSP430FR2355:只能接收通过串行方式从 Android 发送的字符串的最后一个字符

Guru**** 2553450 points
Other Parts Discussed in Thread: MSP430FR2355

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/833314/msp430fr2355-only-able-to-receive-last-character-of-string-sent-from-android-over-serial

器件型号:MSP430FR2355

我正在尝试从我编写的 Android 应用中发送多个字符、以便与使用 MSP430FR2355的传感器板通信。  

当我单击发送按钮时、Android 将作为字节数组发送字符串。  

sendButton.setOnClickListener(new view.OnClickListener()
{
@覆盖
公用空 onClick (View v)
{
if (!EditText.getText()。toString().equals (""))
{
string data = EditText.getText()。toString();
if (usbService!=空)
{
//如果 UsbService 被正确绑定,则发送数据
usbService.write (data.GetBytes());
}
}

} 

在 MSP430侧、我使用中断来指示消息何时传入。 当我接收到一个中断标志时、我立即用一个中断来暂停程序并检查 UCA1RXBUF 缓冲器。 唯一存在的字符是字符串的最后一个字符。  

因此、如果我发送"Hello"、则中断只会看到"o"。  

它是串行的、因此我想我每次接收一个字符。 因此、将为每个字符调用 ISR。 当接收到字符时、我只需将接收到的字符插入我自己的缓冲区字符数组中。 根据我的需求处理完整消息、依此类推。  

我不能这样做、因为我只接收正在发送的字节数组的最后一个字符。  

我处理这种情况的正确方法是将字符串转换为字节数组、然后使用 for 循环单独发送字节数组的每个字符? 或者是否有更好的选择? 有什么见解吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    简短回答:不要在 ISR 中断点/暂停。 这会停止您的程序、但不会停止您的 Android 程序、在 CCS 处理断点所需的时间内、该程序已经发送了所有内容。 您的串行时钟保持运行、并安静地溢出 RXBUF、因此您可以看到最后一个字节。