C

champnim

Guest
私はプログラムがC ATコマンドを介して制御するために必要な携帯送信電話から方法を知って私のしたい書かれたCの私はプログラムをパソ¥コン使用します。

 
私はuを仮定準備ができて、すべてのインターフェイスハードウェアが。

1)CreateFileを開き、シリアル通信を使用ポートを
2)設定ボーレートを、ストップビットSetCommStateを使用して等
3)読んで、使用してコムの書き込みには、シリアルReadFileおよびWriteFile
4)変換[OK]を、 をATに送信すると仮定uが願いを"のAT OK"をアスキー、およびWriteFileを送信使用しては。

ありがとう。

 
最初のコードを16進コマンドのATの文字をそれぞれ変換し、シリアルを送信したり、それを送信する16進数に変換することなく。

 
変換は、16進のASCII最初のクリックだけでシリアルに送信します。

ATコマンドをただし、保持するバッファの使用はchar型として宣言されて、それは、1を変換することができない必要とするアスキー16進直接コマンドを送ることができます。
アイデアについては、必ずこのメソ¥ッドは、単に。

 
私が間違っているため"だのAT ¥¥ rをしようとして"送信私の電話か私にはWriteFileはいることエラー(第教えてplsは87 ...)

#は<iostream>を含む
#は<windows.h>を含む
#は<string.h>に含まれて

int型のmain()

DCBのDCBの。
ハンドルのhCom;
のBOOL fSuccess;
重複のオ;
DWORD値のdwEvtMask;
文字バッファ[2048];
char *文字pcCommPort ="COM4を";

hCom = CreateFileが(pcCommPort、
GENERIC_READの|のはGENERIC_WRITE、
0、/ /通信デバイスへのアクセス専用/必要が開いたwを
NULLの場合は、/ /セキュリティなしの属性
OPEN_EXISTINGは、/ /通信デバイスOPEN_EXISTINGを使用する必要
FILE_FLAG_OVERLAPPEDを、
NULLの場合は/ /デバイスコムのためにhTemplateはNULLである必要があります
);

場合)(hCom == INVALID_HANDLE_VALUEが

/ /エラーを処理。
のprintf("CreateFileのは"n失敗しましたエラー%dの¥¥ GetLastErrorを());
リターン(1);

fSuccess = GetCommState(hCom、&DCBを);

(もし!fSuccess)

/ /エラーを処理。
のprintf("GetCommStateは"n失敗しましたエラー%dの¥¥ GetLastErrorを());
リターン(2);


/ /入力DCBので:ボー= 9600 bpsの、8データビット、パリティなし、1ストップビット。

dcb.BaudRate = CBR_9600は/ /レートを設定するボー
dcb.ByteSize = 8; / /データのサイズ、xmitのと、RCVは
dcb.Parity = NOPARITY / /パリティなしビット
dcb.StopBits = ONESTOPBIT / / 1ストップビット

fSuccess = SetCommState(hCom、&DCBを);

(もし!fSuccess)

/ /エラーを処理。
のprintf("SetCommStateは"n失敗しましたエラー%dの¥¥ GetLastErrorを());
リターン(3);


printf関数は、("シリアルポート%sの再構¥成が正常にします¥¥ n"は、pcCommPortを);

/ / char *をコマンド="";
unsigned long型byteswritten;
)"、3、&byteswritten場合は、(!WriteFileで(hCom、の"AT ¥¥ rをNULLに)

のprintf("WriteFileでは"n失敗しましたエラー%dの¥¥ GetLastErrorを());
リターン(4);

/ / printfは("文字列%を%sの記述が正常だポート"を、コマンド、pcCommPort);


 
私は常にデータを送信する方法を、この使用

BYTEデータは、[5] =(0);
DWORD値は、byteswritten;
のBOOL。戻り;
BYTEはbytes2send;
.......
.....

データは0x41 [0] =; / / ASCIIコードA
データは0x54 [1] =; / / ASCIIコードのT
データは[2] = 0x5cこの;
データは[3] = 0x72;

bytes2send = 4;

。戻り= WriteFileは(hCom、&データ、bytes2send、&NULLをbyteswritten、);

再び失敗する場合は、多分以下のように¥¥ rを置き換えることができますしてキャリッジ、戻り値: -
データは0x41 [0] =; / / ASCIIコードA
データは0x54 [1] =; / / ASCIIコードのT
データは[2] = 0x0Dを/ / ASCIIのCRの

bytes2send = 3;

ホープは役立ちます。

 

Welcome to EDABoard.com

Sponsor

Back
Top