C ++、ブルートゥースシリアル読み出しと書き込み、さらにマイクロコントローラと通信します

そのような機能を実装するためのプロジェクトの必要性を行う際に、誤って達成1日は突然、インターネット上の良い答えを見つけることができます。ここについての記録は、それが簡単に達成することができます。

備考:

1、MCUモジュール:; HC-05 Bluetoothモジュール
2は、Bluetooth通信が実際に読んで、シリアルポートへの書き込みについて教えするので、ここで、シリアルポートを使用します。
3、主に使用されるAPI:のCreateFile()、WriteFileを( )、のReadFile()

コード・ショー:

(本明細書中でシリアルポートに読み書きする機能を提供して定義されて、直接移植することができます)

ヘッドの関数定義

# ifndef __uart_
#define __uart_

#include<windows.h>

#define RtlZeroMemory(Destination,Length) memset((Destination),0,(Length))
#define ZeroMemory RtlZeroMemory

BOOL Write(char *write_data, DWORD contentLen, DCB &dcb);
BOOL Read(char *read_data, DCB &dcb);
void DCB_init(DCB &dcb);

#endif // !__uart_

.Cファイル定義

#include "uart.h"
#include <iostream>

void DCB_init(DCB &dcb)
{
 dcb.BaudRate = 9600;
 dcb.ByteSize = 8;
 dcb.Parity = 0;
 dcb.StopBits = 1;
}

BOOL Write(char *write_data, DWORD contentLen,DCB &dcb)
{
 HANDLE hcom;
 char *tmpBuf;
 DWORD dwBytesWrite = 0;
 int dwBytesToWrite;

 hcom = CreateFile(L"COM6", GENERIC_WRITE | GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

if (hcom == INVALID_HANDLE_VALUE)
 {
  printf("create file error!\n");
  CloseHandle(hcom);
  return FALSE;
 }

 SetupComm(hcom, 1024, 1024);
 GetCommState(hcom, &dcb);
 SetCommState(hcom, &dcb);

 dwBytesToWrite = contentLen;
 dwBytesWrite = 0;

 tmpBuf = write_data;
 do {                                       //循环写文件,确保完整的文件被写入  
  WriteFile(hcom, tmpBuf, dwBytesToWrite, &dwBytesWrite, NULL);
  dwBytesToWrite -= dwBytesWrite;
  tmpBuf += dwBytesWrite;
 } while (dwBytesToWrite > 0);

 if (hcom != INVALID_HANDLE_VALUE)
 {
  CloseHandle(hcom);
  hcom = INVALID_HANDLE_VALUE;
 }

 return TRUE;
}

BOOL Read(char *read_data,DCB &dcb)
{
 HANDLE hcom;
 DWORD fileSize;
 char *buffer;
 DWORD dwBytesRead, dwBytesToRead, tmpLen;

 hcom = CreateFile(L"COM5", GENERIC_WRITE | GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

 if (hcom == INVALID_HANDLE_VALUE)
 {
  printf("open file error!\n");
  CloseHandle(hcom);
  return FALSE;
 }

 fileSize = GetFileSize(hcom, NULL);          //得到文件的大小
 buffer = (char *)malloc(fileSize);
 ZeroMemory(buffer, fileSize);
 dwBytesToRead = fileSize;
 dwBytesRead = 0;
 read_data = buffer;

 do {                                       //循环读文件,确保读出完整的文件    
  ReadFile(hcom, read_data, dwBytesToRead, &dwBytesRead, NULL);
  if (dwBytesRead == 0)
   break;
  dwBytesToRead -= dwBytesRead;
  read_data += dwBytesRead;
 } while (dwBytesToRead > 0);

 //  TODO 处理读到的数据 buffer
 free(buffer);
 CloseHandle(hcom);

 return TRUE;
}

コンピュータのBluetoothシリアルポートの設定

コンピュータのBluetooth設定画面の電源を入れ、より多くのBluetoothオプションをチェック
ここに画像を挿入説明

2、次のオプションは、矢印チェック
ここに画像を挿入説明
3を、[追加]をクリックし
ここに画像を挿入説明
、仮想シリアルポートを設定する着信と発信、4
ここに画像を挿入説明

最後に、上記のコードのCreateFileで指定するシリアルポートの設定と一致することを忘れないでください!

読者はそれが私の公共のを見ることができるように、参考にしたい、私は上記の中で作られたノートを勉強します、私たちは一緒に学ぶことができるようになります!

ここに画像を挿入説明

Altキー

公開された19元の記事 ウォン称賛12 ビュー6102

おすすめ

転載: blog.csdn.net/Rosen_er/article/details/104548145