极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9471|回复: 4

【求助】怎样用特殊波特率访问串口

[复制链接]
发表于 2013-10-3 03:24:53 | 显示全部楼层 |阅读模式
本帖最后由 southwolf 于 2013-10-3 03:27 编辑

事情的起因是这样的……

我在调试Microduino蓝牙模块的时候,本来是要设成115200 的,一不小心设置了它的波特率为鬼畜的1382400(不知道为啥是这个数字,模块的datasheet里支持的最高速度)

然后这个蓝牙模块竟然没有硬件的恢复出厂方法……只能通过串口发指令……问题是这个鬼畜的波特率我怎么可能连得上啊……

看了一下AVR的手册,貌似16Mhz的时候是可以支持到1mbps的,但仍然不能支持1382400

试了一下windows里以前用过的设置波特率 貌似不起作用……

[pre lang="C" line="1"]// SerialPort.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"


int _tmain(int argc, _TCHAR* argv[])
{
        HANDLE hCom;
        DCB dcb;
        BOOL bSuccess;
        COMMTIMEOUTS CommTimeouts;
        char* msg="AT+DEFAULT";
        DWORD count = 0;
        hCom = CreateFile(L"COM2",
                        GENERIC_READ|GENERIC_WRITE,
                        0,
                        NULL,
                        OPEN_EXISTING,
                        0,
                        NULL
        );
        if(hCom==INVALID_HANDLE_VALUE)
        {
                printf("Com port open failed\n");
                return 1;
        }

        memset(&dcb,0,sizeof(DCB));
        bSuccess=GetCommState(hCom,&dcb);
        if(!bSuccess)
        {
                printf("Com port info error!\n");
                return 1;
        }

        GetCommTimeouts(hCom,&CommTimeouts);
        CommTimeouts.ReadTotalTimeoutConstant=10;
        CommTimeouts.WriteTotalTimeoutConstant=10;
        if(!SetCommTimeouts(hCom,&CommTimeouts))
        {
                printf("Timeout set error!\n");
                return 1;
        }

        bSuccess=SetCommState(hCom,&dcb);
        dcb.BaudRate = 1382400;

        if(!SetCommState(hCom, &dcb))
        {
                printf("Com state set error!\n");
                return 1;
        }

        if(WriteFile(hCom, msg, 11, &count, NULL)==0)
        {
                printf("Write error!\n");
                return 1;
        }
        CloseHandle(hCom);
        return 0;
}
[/code]
回复

使用道具 举报

发表于 2013-10-3 19:36:02 | 显示全部楼层
找个可自适应的串口速率的串口助手
回复 支持 反对

使用道具 举报

发表于 2013-10-3 20:05:36 | 显示全部楼层
把蓝牙模块tx和rx连到一起,然后手机蓝牙连上去,给它发指令,看看能不能对它进行配置
回复 支持 反对

使用道具 举报

发表于 2013-12-18 18:33:06 | 显示全部楼层
histamine 发表于 2013-10-3 20:05
把蓝牙模块tx和rx连到一起,然后手机蓝牙连上去,给它发指令,看看能不能对它进行配置

太有创意太有才了。 不知道行不行?
回复 支持 反对

使用道具 举报

发表于 2013-12-19 13:09:49 来自手机 | 显示全部楼层
用计算机usb转串口直联你蓝牙模块,改好了再接arduino
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-10 14:45 , Processed in 0.038069 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表