13068705106 发表于 2015-5-8 21:04:10

bc5 单个打开uart

最近想在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);
                                j = buf;
                }
                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;
}



628495173 发表于 2015-5-9 20:05:55

参考下:http://www.52bluetooth.com/thread-5528-1-1.html

13068705106 发表于 2015-5-11 08:59:23

btspeaker 发表于 2015-5-9 20:05
参考下:http://www.52bluetooth.com/thread-5528-1-1.html

好的,看下这个例子也好
页: [1]
查看完整版本: bc5 单个打开uart