马上注册,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册 
×
最近想在BC5上实现SPP,现在是初级阶段,当独的试了一下串口,好像收到的数据貌似是有问题的,不知道咋回事,感觉从电脑串口助手发送过来的数据多了。想问下是哪里出了问题。
#include <stdio.h>
#include <stream.h>
#include <source.h>
#include <sink.h>
#include <message.h>
#include <ps.h>
#include <panic.h>
#include <csrtypes.h>
TaskData uart;
static void UartHandler(Task t, MessageId id, Message message);
void UartHandler(Task t, MessageId id, Message message)
{
switch (id)
{
case 0:
{
const char *string = "Hello world";
uint32 length = strlen(string);
uint32 offset;
uint8 *dest;
Sink sink = StreamUartsink();
PanicNull(sink);
offset = SinkClaim(sink, length);
if (offset == 0xffff)
panic();
dest = SinkMap(sink);
PanicNull(dest);
memcpy(dest + offset, string, length);
PanicZero(SinkFlush(sink, length));
MessagesendLater(t, 0, 0, 500);
}
break;
case MESSAGE_MORE_DATA:
{
Source source;
uint8 i, j;
uint8 *buf = NULL;
uint8 len = 0;
Source = SourceUartSource();
buf = (uint8 *)SourceMap(Source);
len = sourceSize(source);
for(i = 0; i < len;i++)
printf("%x",buf[i]);
j = buf[id];
}
SourceDrop(source, len);
break;
}
}
int main (void)
{
StreamUartConfigure(VM_UART_RATE_9K6, VM_UART_STOP_ONE, VM_UART_PARITY_NONE);
MessageSinkTask(StreamUartSink(), &uart);
uart.handler = UartHandler;
MessageSendLater(&uart, 0, 0, 5000);
MessageLoop();
return 0;
}
|