|
簡単な説明・補足は次回にします。なおデバッグ用コードを
削除しましたが、その際にウッカリ必要なコードを消した 可能性もあり、その場合はご容赦下さい。Windows7より ソースを持って来てLinuxでアップロードしてますので。 今日はAM11:00より町内会の夏祭があり年に数回飲酒する 一杯200円の「(生)ビールの日」です。 <ヘッダーファイル:FM2PC_TRNS.h> #pragma once #include <afxwin.h> class FM2PC_TRNS : public CWinThread { DECLARE_DYNCREATE(FM2PC_TRNS) public: int exec_flg; char* getbuf_data; HANDLE hCommPort; public: virtual BOOL InitInstance(); virtual int ExitInstance(); virtual int Run(); DECLARE_MESSAGE_MAP() }; <C言語ソースファイル:FM2PC_TRNS.cpp> #include "pch.h" #include "FM2PC_TRNS.h" IMPLEMENT_DYNCREATE(FM2PC_TRNS, CWinThread) BEGIN_MESSAGE_MAP(FM2PC_TRNS, CWinThread) END_MESSAGE_MAP() #define FT245RL_BROCK2 16 static FILE * file; static BOOL fSuccess; static errno_t error; BOOL FM2PC_TRNS::InitInstance() { // TODO: ここに特定なコードを追加するか、もしくは基底クラスを呼び出してください。 CFrameWnd* pWnd = new CFrameWnd; pWnd->Create(NULL, L"CWinThread NES_QD_MENT20190706"); pWnd->ShowWindow(SW_SHOW); pWnd->UpdateWindow(); pWnd->SetWindowPos(&CWnd::wndTop, 300, 300, 300, 200, SWP_NOACTIVATE); m_pMainWnd = pWnd; // SetThreadPriority(THREAD_PRIORITY_ABOVE_NORMAL); SetThreadPriority(THREAD_PRIORITY_HIGHEST); error = fopen_s(&file, "sirial_20190620.dat", "wb"); if (error != 0) { exec_flg = 0; return FALSE; } return 1; } int FM2PC_TRNS::ExitInstance() { // TODO: ここに特定なコードを追加するか、もしくは基底クラスを呼び出してください。 if (NULL != file) fclose(file); SetThreadPriority(THREAD_PRIORITY_NORMAL); return 1; } int FM2PC_TRNS::Run() { // TODO: ここに特定なコードを追加するか、もしくは基底クラスを呼び出してください。 int i, brock; int top_adr, btm_adr, tmp_adr; unsigned char RCV_buf[256]; DWORD dwRead; if (0 == exec_flg) return CWinThread::Run(); // 受信処理ループ fSuccess = ReadFile(hCommPort, RCV_buf, FT245RL_BROCK2, &dwRead, NULL); tmp_adr = (int)RCV_buf[2]; top_adr = 256 * tmp_adr + (int)RCV_buf[3]; tmp_adr = (int)RCV_buf[4]; btm_adr = 256 * tmp_adr + (int)RCV_buf[5]; brock = (btm_adr - top_adr) / FT245RL_BROCK2; for (i = 0; brock > i; i++) { ReadFile(hCommPort, RCV_buf, FT245RL_BROCK2, &dwRead, NULL); fwrite(RCV_buf, 1, dwRead, file); } SetThreadPriority(THREAD_PRIORITY_NORMAL); exec_flg = 0; return CWinThread::Run(); } |

>
- コンピュータとインターネット
>
- コンピュータ
>
- ソフトウェア





