c语言-VC++6.0开发工具,打开串口,重叠IO操作,提示有访问冲突,求大神指点

问题描述

VC++6.0开发工具,打开串口,重叠IO操作,提示有访问冲突,求大神指点
#include
#include

LRESULT CALLBACK WndProc (HWND hwnd UINT msg WPARAM wParam LPARAM lParam);

#define WM_TRANSFINISHED (WM_USER + 1)

typedef struct
{
HWND hwnd;
HANDLE hComm;
}PARAMS *PPARAMS;

int WINAPI WinMain (HINSTANCE hInstance HINSTANCE hPreInstance LPSTR lpCmdLine int nShowCmd)
{
char* szAppName = ""TEST"";
MSG msg;
HWND hwnd;
WNDCLASS wndclass;

wndclass.style          = CS_HREDRAW | CS_VREDRAW;wndclass.lpfnWndProc    = WndProc;wndclass.cbClsExtra     = 0;wndclass.cbWndExtra     = 0;wndclass.hIcon          = LoadIcon (0 IDI_APPLICATION);wndclass.hCursor        = LoadCursor (0 IDC_ARROW);wndclass.hbrBackground  = (HBRUSH) GetStockObject (WHITE_BRUSH);wndclass.hInstance      = hInstance;wndclass.lpszClassName  = szAppName;wndclass.lpszMenuName   = NULL;if (!RegisterClass (&wndclass))    MessageBox (NULLThe window class is wrong!"" szAppName MB_OK);hwnd = CreateWindow (szAppNameFirst Show!"" WS_OVERLAPPEDWINDOW                     CW_USEDEFAULT CW_USEDEFAULT CW_USEDEFAULT CW_USEDEFAULT                     NULL NULL hInstance NULL);ShowWindow (hwnd nShowCmd);UpdateWindow (hwnd);while (GetMessage (&msg NULL 0 0)){    TranslateMessage (&msg);    DispatchMessage (&msg);}return msg.wParam;

}

VOID ThreadProc (PVOID pvoid)
{
BOOL fWait;
DWORD Event;
PPARAMS pparams;
OVERLAPPED OverlapWait;

pparams = (PPARAMS)pvoid;OverlapWait.hEvent = CreateEvent (NULL TRUE TRUE NULL);fWait = WaitCommEvent (pparams->hComm &Event &OverlapWait);fWait = GetOverlappedResult (pparams->hComm &OverlapWait NULL TRUE);if (fWait)    if (EV_TXEMPTY == Event)    {        SendMessage (pparams->hwnd WM_TRANSFINISHED 0 0);    }

}

LRESULT CALLBACK WndProc (HWND hwnd UINT message WPARAM wParam LPARAM lParam)
{
static char* name[5] = {""f1(K)""f2(K)""RU/RD""PHASE""OTHER""};
static HINSTANCE hInstance;
static int cxChar cyChar cxClient cyClient;
static HWND hwndEdit[5] hwndButton hwndText[5];
int i;
PAINTSTRUCT ps;
HDC hdc;

char                temp[13];float               data[5];char*               trans;DWORD               cbToWrite = 20 cbWritten;static HANDLE       hCom;static OVERLAPPED   OverlapWrite;DCB                 myDCB;COMMTIMEOUTS        timeout = {0 0 0 30 30};static PARAMS       params;switch (message){case WM_CREATE:    hInstance = (HINSTANCE)GetWindowLong (hwnd GWL_HINSTANCE);    hwndButton = CreateWindow (""button""SEND"" WS_CHILD | WS_VISIBLE | WS_BORDER                  hwnd (HMENU)0 hInstance NULL);    for (i = 1; i < 6; i++)    {        hwndEdit[i - 1] = CreateWindow (""edit""0"" WS_CHILD | WS_VISIBLE | WS_BORDER | ES_LEFT | ES_NUMBER                                        hwnd (HMENU)i hInstance NULL);        hwndText[i - 1] = CreateWindow (""static"" name[i-1] WS_CHILD | WS_VISIBLE | SS_CENTER                                         hwnd (HMENU)(i + 5) hInstance NULL);    }    return 0;case WM_SIZE:    cxClient    = LOWORD (lParam);    cyClient    = HIWORD (lParam);    cxChar      = LOWORD (GetDialogBaseUnits ());    cyChar      = HIWORD (GetDialogBaseUnits ());    MoveWindow (hwndButton cxChar*2 cyChar*2 cxChar*8 cyChar*3/2 TRUE);    for (i = 0; i < 5; i++)    {        MoveWindow (hwndEdit[i] cxChar*12 cyChar*(5 + 3*i) cxChar*8 cyChar*3/2 TRUE);        MoveWindow (hwndText[i] cxChar*2 cyChar*(5 + 3*i) cxChar*8 cyChar*3/2 TRUE);    }    return 0;case WM_CTLCOLORSTATIC:    SetBkColor ((HDC)wParam GetSysColor (COLOR_BTNHIGHLIGHT));    return (LRESULT) (HBRUSH)GetStockObject (WHITE_BRUSH);case WM_CTLCOLORBTN:    SetBkColor ((HDC)wParam GetSysColor (COLOR_BTNHIGHLIGHT));    return (LRESULT) (HBRUSH)GetStockObject (WHITE_BRUSH);case WM_PAINT:    hdc = BeginPaint (hwnd &ps);    EndPaint (hwnd &ps);    return 0;case WM_DESTROY:    GetWindowText (hwndEdit[0] temp 13);    MessageBox (NULL tempOK"" MB_OK);    PostQuitMessage (0);    return 0;case WM_TRANSFINISHED:    EnableWindow (hwndButton TRUE);    CloseHandle (hCom);    MessageBox (NULLTransform done successfully!""Comm"" MB_OK);    return 0;case WM_COMMAND:    if (hwndButton == (HWND)lParam && (HIWORD (wParam) == BN_CLICKED || HIWORD (wParam) == BN_DBLCLK))    {        EnableWindow (hwndButton FALSE);        for (i = 0; i < 5; i++)        {            GetWindowText (hwndEdit[i] temp 13);            data[i] = atof (temp);        }        trans = (char*) data;        hCom = CreateFile (""COM3"" GENERIC_WRITE 0 NULL OPEN_EXISTING                            FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED                            NULL);        if (hCom == INVALID_HANDLE_VALUE)        {            MessageBox (NULLCANNOT OPEN THE PORT!""Comm"" MB_OK);            return 0;        }        SetupComm (hCom 1024 512);        GetCommState (hCom &myDCB);        myDCB.BaudRate  = 9600;        myDCB.fBinary   = TRUE;        myDCB.fParity   = FALSE;        myDCB.ByteSize  = 8;        myDCB.Parity    = NOPARITY;        myDCB.StopBits  = ONESTOPBIT;        if (!SetCommState (hCom &myDCB))        {            MessageBox (NULL TEXT (""port set failure"") NULL MB_OK);            return 0;        }        if (!SetCommTimeouts (hCom &timeout))        {            MessageBox (NULL TEXT (""Timeout set failure"") NULL MB_OK);            return 0;        }        if (!SetCommMask (hCom EV_TXEMPTY))        {            MessageBox (NULL TEXT (""event set failure"") NULL MB_OK);            return 0;        }        OverlapWrite.hEvent = CreateEvent (NULL TRUE TRUE NULL);        params.hComm = hCom;        params.hwnd = hwnd;        _beginthread(ThreadProc 0 &params);        //WriteFile (hCom trans cbToWrite &cbWritten &OverlapWrite);        WriteFile (hComa"" 1 &cbWritten &OverlapWrite);        GetOverlappedResult (hCom &OverlapWrite NULL TRUE);    }    return 0;}return DefWindowProc (hwnd message wParam lParam);

}

时间: 2024-09-08 10:14:01

c语言-VC++6.0开发工具,打开串口,重叠IO操作,提示有访问冲突,求大神指点的相关文章

c语言-C++代码改成C语言代码,没学过C++好多看不懂啊(泪奔······)求大神指点,我用的VC6.0

问题描述 C++代码改成C语言代码,没学过C++好多看不懂啊(泪奔······)求大神指点,我用的VC6.0 代码如下, #include "winsock2.h" #include "Winsnmp.h" #include 这里是string以下都要用 < 和 > 括起来(不知为何不显示=,=) #include vector #include algorithm #include iostream #pragma comment(lib,"

c语言-菜鸟OJ, C语言数简单列求和, 感觉测试没错, 但是wrong answer, 求大神指点

问题描述 菜鸟OJ, C语言数简单列求和, 感觉测试没错, 但是wrong answer, 求大神指点 Description 有一个分数序列:2/1,3/2,5/3,8/5,13/8,21/13... 求出这个数列的前n项之和. Input 多测试用例,每个测试用例一行,每行是一个正整数n Output 为每个测试用例单独输出一行:该数列的前n项之和.结果均保留小数点后10位. Sample Input 1 2 3 Sample Output 2.0000000000 3.5000000000

c/c++-tc怎么转换成vc++.6.0,求大神指点一二

问题描述 tc怎么转换成vc++.6.0,求大神指点一二 我看的一本c编写的项目书,但用的是tc编写,可我电脑安装的是vc++6.0,一些都文件比如dos.h没有,就无法实现功能.且又安装不了tc.怎么办?有谁能解决我的问题吗,谢谢 解决方案 这么说吧,各个编译器还有它自己特有的函数库,这些函数有些是由操作系统相应的函数封装起来的.比如TC的图形函数库,不属于C标准函数库,VC上就没有,比如你说的dos.h,在VC6.0里面肯定是不能用的,当然TC能用的函数,在VC6.0里面也应该有相对应的函数

图片-今天打开eclipse,就出现这种情况,请大神指点!!!

问题描述 今天打开eclipse,就出现这种情况,请大神指点!!! 解决方案 首先,不建议安装到中文目录下.可能是这2种情况导致的: 1.环境变量没配置2.eclipse和jdk版本位数不一致要同是32位或者64位(注意32位机子只能使用32位的64位可以兼容使用32位和64位的) 解决办法:1.配置环境变量: 第一步:右键"我的电脑"点击"属性" 第二步:点击"高级系统设置"点击"环境变量(N)" 第三步: 在"系

C语言,寻找二维数组鞍点,代码个人测试正确, 但是wrong answer, 求大神指点

问题描述 C语言,寻找二维数组鞍点,代码个人测试正确, 但是wrong answer, 求大神指点 Description 给定一个海拔平面图,相当于一个二维数组,数组的每个元素表示一个点的海拔高度.请判断该图中是否存在鞍点,如果存在,则输出该鞍点的位置,即行.列坐标. 本题规定鞍点的定义为:该点的值在它所在的那行中是唯一最大的,且该点的值在它所在的那列中是唯一最小的. Input 输入有多个测试用例,如果把每个测试用例看作一个"块",那么,在一个"块"中: 第一行

c语言-关于C语言链表的一些问题,代码怎么都运行不成功跪求大神指点

问题描述 关于C语言链表的一些问题,代码怎么都运行不成功跪求大神指点 下面代码主要实现链表的创建,插入,删除,并且能将两个年龄递增链表进行合并成递减链表 然而在插入和删除操作中gets函数无法起作用,strcmp函数也出现位置冲突报错..功力不足实在解决不了..跪求大神解答..(感觉自己写的东西除了上面两个错误应该还有,但是因为位置冲突问题就只能编译到那个地方无法进行下去..我肉眼实在找不出来.. #include<stdio.h> #include<stdlib.h> #incl

c语言,自己编了个直接插入排序,可是却输出不了正确的结果,找不到哪里错了,求大神指点

问题描述 c语言,自己编了个直接插入排序,可是却输出不了正确的结果,找不到哪里错了,求大神指点 #include #include void Straightinsertionsort(int a[]) { int i,j,k; int b[10]={0}; b[0]=a[0]; for(i=1;i { for(j=i-2;j>=0;j--) { if(a[i]>b[j]) { for(k=i-2;k>j;k--) { b[k+1]=b[k]; } b[j+1]=a[i]; } } }

6410 安卓开发板 录音-6410开发板上跑Android 2.1 ,录音出现问题,求大神指点

问题描述 6410开发板上跑Android 2.1 ,录音出现问题,求大神指点 我在6410的开发板上运行 Android 2.1,写了个程序 ,想要进行录音.代码 如下:mediaRecorder = new MediaRecorder(); Toast.makeText(TelListenner.thisnew MedioRecorder()成功"" Toast.LENGTH_SHORT).show(); //myRecAudioFile = File.createTempFile

c语言-C语言入门问题求大神指点

问题描述 C语言入门问题求大神指点 #include #define TABINC 8 //tab increment size //replace strings of blanks with tabs and blanksint main(void){ int c nb nt pos; nb = 0; //number of blanksnt = 0; //number of tabsfor (pos = 1; (c = getchar()) != EOF; pos++){ if (c ==