久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

串口編程中使用MScommd的注意事項

 ddlld345 2012-06-22

串口編程中使用MScommd的注意事項

VC串口編程中通常使用的三種方法(利用MSComm控件,,利用SerialPort類進行多串口編程,使用API通訊函數(shù)),相信大家都有比較的熟悉了,。今天在這里主要講一下在使用控件MScomm控件進行串口編程中要注意的地方,。

代碼中經(jīng)常要注意的問題無外乎在于初始化,,邊緣檢測,,觸發(fā)事件,類包含等幾個問題

1,,首先是初始化,,這里以初始化com1口為例,具體見下面代碼:

    ///////////////////////COM1///////////////////////////////////////

    if(m_mscom.GetPortOpen())

           m_mscom.SetPortOpen(FALSE);

 

    m_mscom.SetCommPort(1);   //選擇com1

    if( !m_mscom.GetPortOpen())

    {

           m_mscom.SetPortOpen(TRUE);//打開串口

           m_staticchuan1="開啟狀態(tài)";

    }

    else

           m_staticchuan1="關(guān)閉狀態(tài)";

    m_mscom.SetSettings("9600,n,8,1"); //波特率9600,,無校驗,,8個數(shù)據(jù)位,1個停止位

    m_mscom.SetInputMode(1);

    m_mscom.SetRThreshold(2);        //參數(shù)1表示每當串口接收緩沖區(qū)中有多于或等于1個字符時將引發(fā)一個接收數(shù)據(jù)的OnComm事件

    m_mscom.SetInputLen(0);  //設置當前接收區(qū)數(shù)據(jù)長度為0

    m_mscom.GetInput();//先預讀緩沖區(qū)以清除殘留數(shù)據(jù)

/////////////////////////////////////////////////////////////////////////////////////////////////////

相信大家都會設置初始化,,但很多網(wǎng)友往往會忽視掉在初始化之前對串口是否打開與關(guān)閉的判斷,,這樣在程序運行的時候時不時會出現(xiàn)一些錯誤。

2,,

/***************************************************

*作者:萬田

*時間:2006-09-18

*函數(shù):OnMscomm1()串口一觸發(fā)事件

****************************************************/

void CSpeedDlg::OnMscomm1() //串口一觸發(fā)事件

{

    VARIANT variant_inp;

    COleSafeArray colesafearray_inp;

    long k;

    byte rxdata[3];//我這里定義三個字節(jié),用來接收感應器的三個字符

    CString strtemp;

    if(m_mscom.GetCommEvent() == 2)

    {

           variant_inp = m_mscom.GetInput();

           colesafearray_inp=variant_inp;

           for(k=0;k<2;k++)//讀取三個字節(jié)將數(shù)據(jù)讀入到rxdata數(shù)組中,,其中*為線圈標志,,為從經(jīng)過的時間

                  colesafearray_inp.GetElement(&k,rxdata+k);

           //-------------一路地干器感應線圈識別程序

           if(rxdata[0]==**)

           {

                  //做相應的事件

           }

           if(rxdata[0]==**)

           {

                  //做相應的事件

           }

    

}

////////////////////////////////////////////////////////////////////////////////////////

這里特別要注意的是語句是:

for(k=0;k<2;k++)//讀取三個字節(jié)將數(shù)據(jù)讀入到rxdata數(shù)組中                 colesafearray_inp.GetElement(&k,rxdata+k);

我這里定義的k不能超過2,因為我將讀取的值只有2個字節(jié)長度,。網(wǎng)友一定要清楚你所接受的字節(jié)長度,,根據(jù)具體的字符長度來決定你的循環(huán)上限。

以這里為例,,我將k<2變?yōu)?/SPAN>k<3結(jié)果將會出現(xiàn)莫名的錯誤,。


微機能否通過端口檢測到電平信號,?

懸賞分:20 - 解決時間:2006-10-16 11:39

我做一個控制系統(tǒng),需要微機檢測到外部發(fā)出的信號(比如一個高電平或者低電平),,然后再去做別的,。就象一個士兵時刻等待軍官發(fā)出開始執(zhí)行的命令一樣,士兵需要接收到這個命令

提問者: 問徹底 - 試用期 一級

最佳答案

可以,,你可以用rs232串口(就是微機上9針的COM1COM2)或著用并口(就是微機上25針的那個接口),。

rs232串口。它的2,3引腳為收發(fā),。你可以利用MSCOMMd等控件在VC,VB,DELPHI中很容易就可以寫一個程序,,也可以用windows API。當然你得知道232異步通信的規(guī)約,,就是先得初始化串口,,確定起始位數(shù)和停止位數(shù)目,你可以用停止位和起始位作為高低電平的檢測,。

用并口可以查一下D25Centronics的針腳定義,,然后選一個針檢測

 

 


初次接觸mysqlc++ 連接mysql

今天要做個模擬實驗要用到數(shù)據(jù)庫,經(jīng)同事介紹mysql很強大而且開源所以就試試怎么樣,,首先用c++連接mysql,,具體程序如下,供以后參考,!
 
注:你必須先保證你安裝了mysql數(shù)據(jù)庫,,并把安裝目錄下的lib目錄中的libmysql.dlllibmysql.lib復制到你新建的vs2005或者vc++ 6.0項目目錄下,并把libmysql.lib引到項目中,。

#include "stdafx.h"

#include <WinSock2.h>
//
定義socket

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

using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
    MYSQL mysql;
    mysql_init(&mysql);
    if (mysql_real_connect(&mysql,"localhost","root","
密碼","數(shù)據(jù)庫名",3306,0,0))
    {
        cout << "The connection is OK!" < <endl;
        return 0;
    }
    else
    {
        int i = mysql_errno(&mysql);
        const char * s = mysql_error(&mysql);
        cout << s << endl;
    }
}


C語言鏈接MySQL, (實例一)

用的是mysql自帶的LIB包,。

#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <mysql.h>

MYSQL* my_conn()
{
        MYSQL *mysql;
        /*初始化指針*/
        mysql = mysql_init(NULL);

        /*連接數(shù)據(jù)庫*/
        if(!(mysql = mysql_real_connect(mysql, "localhost", "root", "root", "test", 0, NULL, 0)))
    {
           printf("error!!%s\n", mysql_error(mysql));
           exit(1);
    }
        printf("連接數(shù)據(jù)庫成功!,!\n");

        return mysql;
}

/*執(zhí)行sql語句并返回*/
MYSQL_RES* execute_query(MYSQL* mysql, char *sql)
{
        MYSQL_RES *res = NULL;
        printf("sql:%s\n", sql);

        /*執(zhí)行SQL語句*/
        if(mysql_query(mysql,sql)) {
        fprintf(stderr,"Query failed (%s)\n",mysql_error(mysql));
        exit(1);
    }
   
        /*返回結(jié)果集*/
    if (!(res=mysql_store_result(mysql))) {
        fprintf(stderr,"Couldn't get result from %s\n", mysql_error(mysql));
        exit(1);
    }
   
        /*結(jié)果列數(shù)*/
    printf("number of fields returned: %d\n",mysql_num_fields(res));
       
        return res;
}



int main()
{
    MYSQL *mysql;
        MYSQL_RES *res;
        MYSQL_ROW row;
        char *qbuf;

    mysql = my_conn();

        qbuf = "select * from test";
/*        printf("main sql:%s\n", qbuf);*/
        res = execute_query(mysql, qbuf);
       
        while(row = mysql_fetch_row(res))
        {
                printf("id=%s\t", row[0]);
                printf("name=%s\t", row[1]);
                printf("remark=%s\n", row[3]);
        }

        puts("query ok!!\n");

        mysql_free_result(res);
        mysql_close(mysql);
    return 1;
}


C語言鏈接MYSQL數(shù)據(jù)庫(實例二

 

1 #include <mysql.h>/*注意要包含這個頭文件*/
  2 #include <string.h>
  3 #include <stdlib.h>
  4 #include <stdio.h>
  5 
  6 /*定義了一些數(shù)據(jù)庫連接需要的宏*/
  7 #define HOST "localhost"
  8 #define USERNAME "ABitNo"
  9 #define PASSWORD "ABitNo"
 10 #define DATABASE "abitno"
 11 
 12 /*這個函數(shù)用來執(zhí)行傳入的sql語句*/
 13 void exe_sql(char* sql) {
 14 
 15     MYSQL my_connection; /*這是一個數(shù)據(jù)庫連接*/
 16     int res; /*執(zhí)行sql語句后的返回標志*/
 17 
 18     /*初始化mysql連接my_connection*/
 19     mysql_init(&my_connection);
 20 
 21     /*這里就是用了mysql.h里的一個函數(shù),,用我們之前定義的那些宏建立mysql連接,并
 22     返回一個值,,返回不為空證明連接是成功的*/
 23     if (mysql_real_connect(&my_connection, HOST, USERNAME, PASSWORD, DATABASE,
 24             0, NULL, CLIENT_FOUND_ROWS)) {/*連接成功*/
 25 
 26         printf("數(shù)據(jù)庫執(zhí)行exe_sql連接成功,!\n");
 27 
 28         /*這句話是設置查詢編碼為utf8,這樣支持中文*/
 29         mysql_query(&my_connection, "set names utf8");
 30 
 31         /*下面這句話就是用mysql_query函數(shù)來執(zhí)行我們剛剛傳入的sql語句,,
 32         這會返回一個int值,,如果為0,證明語句執(zhí)行成功*/
 33         res = mysql_query(&my_connection, sql);
 34 
 35         if (res) {/*現(xiàn)在就代表執(zhí)行失敗了*/
 36             printf("Error mysql_query !\n");
 37             /*不要忘了關(guān)閉連接*/
 38             mysql_close(&my_connection);
 39         } else {/*現(xiàn)在就代表執(zhí)行成功了*/
 40             /*mysql_affected_rows會返回執(zhí)行sql后影響的行數(shù)*/
 41             printf("%d 行受到影響,!\n\n", mysql_affected_rows(&my_connection));
 42             /*不要忘了關(guān)閉連接*/
 43             mysql_close(&my_connection);
 44         }
 45 
 46     } else {
 47         /*數(shù)據(jù)庫連接失敗*/
 48         printf("數(shù)據(jù)庫執(zhí)行exe_sql連接失?。?/SPAN>\n");
 49     }
 50 }
 51 
 52 /*這個函數(shù)用來執(zhí)行傳入的sql語句,并打印出查詢結(jié)果*/
 53 void query_sql(char* sql) {
 54     MYSQL my_connection; /*這是一個數(shù)據(jù)庫連接*/
 55     int res; /*執(zhí)行sql語句后的返回標志*/
 56     MYSQL_RES *res_ptr; /*指向查詢結(jié)果的指針*/
 57     MYSQL_FIELD *field; /*字段結(jié)構(gòu)指針*/
 58     MYSQL_ROW result_row; /*按行返回的查詢信息*/
 59 
 60     int row, column; /*查詢返回的行數(shù)和列數(shù)*/
 61     int i, j; /*只是控制循環(huán)的兩個變量*/
 62 
 63     /*初始化mysql連接my_connection*/
 64     mysql_init(&my_connection);
 65 
 66     /*這里就是用了mysql.h里的一個函數(shù),,用我們之前定義的那些宏建立mysql連接,,并
 67     返回一個值,返回不為空證明連接是成功的*/
 68     if (mysql_real_connect(&my_connection, HOST, USERNAME, PASSWORD, DATABASE,
 69             0, NULL, CLIENT_FOUND_ROWS)) {/*Connection success*/
 70 
 71         printf("數(shù)據(jù)庫查詢query_sql連接成功,!\n");
 72 
 73         /*這句話是設置查詢編碼為utf8,,這樣支持中文*/
 74         mysql_query(&my_connection, "set names utf8");
 75 
 76         /*下面這句話就是用mysql_query函數(shù)來執(zhí)行我們剛剛傳入的sql語句,
 77         這會返回一個int值,,如果為0,,證明語句執(zhí)行成功*/
 78         res = mysql_query(&my_connection, sql);
 79 
 80         if (res) { /*現(xiàn)在就代表執(zhí)行失敗了*/
 81             printf("Error mysql_query !\n");
 82             /*不要忘了關(guān)閉連接*/
 83             mysql_close(&my_connection);
 84         } else { /*現(xiàn)在就代表執(zhí)行成功了*/
 85             /*將查詢的結(jié)果給res_ptr*/
 86             res_ptr = mysql_store_result(&my_connection);
 87 
 88             /*如果結(jié)果不為空,就把結(jié)果print*/
 89             if (res_ptr) {
 90                 /*取得結(jié)果的行數(shù)和*/
 91                 column = mysql_num_fields(res_ptr);
 92                 row = mysql_num_rows(res_ptr) + 1;
 93                 printf("查詢到 %lu  \n", row);
 94 
 95                 /*輸出結(jié)果的字段名*/
 96                 for (i = 0; field = mysql_fetch_field(res_ptr); i++)
 97                     printf("%s\t", field->name);
 98                 printf("\n");
 99 
100                 /*按行輸出結(jié)果*/
101                 for (i = 1; i < row; i++) {
102                     result_row = mysql_fetch_row(res_ptr);
103                     for (j = 0; j < column; j++)
104                         printf("%s\t", result_row[j]);
105                     printf("\n");
106                 }
107 
108             }
109 
110             /*不要忘了關(guān)閉連接*/
111             mysql_close(&my_connection);
112         }
113     }
114 }
115 
116 int main(int argc, char *argv[]) {
117     /*測試下向里面插入數(shù)據(jù)*/
118     char *exe = "insert into abitno values('ABitNo','http://ABitNo.LinPie.com');";
119     exe_sql(exe);
120 
121     /*測試下查詢*/
122     char *query = "select * from abitno;";
123     query_sql(query);
124 
125     return 0;
126 }


C語言鏈接MYSQL數(shù)據(jù)庫(實例三)

對于剛剛接觸MySQL的用戶,,如果想用C語言連接MySQL,,往往會是一件很麻煩的事情。這里就整理過程做一個詳細的說明,,以便參考,。

概述:

MySQLC語言提供了連接數(shù)據(jù)庫的API,如連接數(shù)據(jù)庫:

MYSQL mysql;
mysql_init(&mysql);
mysql_options(&mysql,MYSQL_READ_DEFAULT_GROUP,"your_prog_name");
if (!mysql_real_connect(&mysql,"host","user","passwd","database",0,NULL,0))
{
    fprintf(stderr, "Failed to connect to database: Error: %s\n",
          mysql_error(&mysql));
}

要想正常使用這些API,,你需要做一下兩件事情:

  • 包含這些API的聲明文件(mysql.h)

·             讓你編譯器找到這些API的可執(zhí)行程序,。(dll)

 

詳細步驟:

1.在你的C語言中加入如下聲明:

#include "windows.h"
#include "mysql.h"
int main(){
......
}

那編譯器如何才能找到mysql.h文件呢?需要做如下設置

a) VC6.0中,,在你的Project(項目),,選擇Tools菜單下的Options選項,在Directories的標簽頁中右邊的Show directories for:下拉列表中選中Includefiles,,然后在中間列表框中添加你本地安裝MySQLinclude目錄路徑,。 (5.*版本的路徑應該是:C:\\Program Files\\MySQL\\MySQL Server 5.0\\include)

b)至此,你的編譯器就知道mysqlAPI接口有哪些函數(shù),,以及函數(shù)的原型是怎樣的(mysql.h),。你的C語言程序應該已經(jīng)能夠通過Compile(編譯)這一步了

2.到上一步你的程序能夠編譯通過了,但是也只是能編譯而已,,想生成可執(zhí)行程序這些還不夠,。還需要告訴編譯器這些API函數(shù)的可執(zhí)行文件在哪兒(libmysql.dll)
 VC6.0
中,,在你的Project(項目)中  

a) 選擇Tools菜單下的Options選項,,在Directories的標簽頁中右邊的Show directories for:下拉列表中選中Library files,然后添加你本地安裝MySQLLib目錄路徑,。 (5.*版本的路徑應該是:C:\\Program Files\\MySQL\\MySQL Server 5.0\\lib\\debug 或者C:\\Program Files\\MySQL\\MySQL Server 5.0\\lib\\opt),;     

b) 選擇Project settings->Link:Object/library modules,添加libmysql.lib”     [把建議將libmySQL.lib,、libmySQL.dll拷到你所建的工程的目錄下]

c) 在你的程序代碼中加入:
#include “mysql.h”
#include “windows.h”
#pragma comment(lib,”libmySQL.lib”) 

 

3.這樣就完成了所有的工作,,你的源代碼大概是這個樣子:

#include "windows.h"

#include "mysql.h"
#pragma comment(lib,"libmySQL.lib")
int main(){
        MYSQL mysql;
        mysql_init(&mysql);
        mysql_options(&mysql,MYSQL_READ_DEFAULT_GROUP,"your_prog_name");
          if(!mysql_real_connect(&mysql,"host","user","passwd","database",0,NULL,0))
{
fprintf(stderr, "Failed to connect to database:Error:%s\n", mysql_error(&mysql));
          }
}

c++mysql實例(四)

views(26) comments(0) last modified @ 2009-05-13 19:15:45

c++mysql實例

2008-10-16 00:11// mysql11.cpp :
定義控制臺應用程序的入口點。
//
#include "stdafx.h"
#include<stdlib.h>
#include <stdio.h>
#include <winsock.h>
#include <mysql.h>
#include <windows.h>
#include <iostream>
#pragma comment(lib, "libmysql.lib")
int main(int argc, char* argv[])
{
unsigned short Port = 3306;
char *IPAddress = "daidai-sony";
char *UserName = "daidai";
char *Password = "daidai";
char *DBName = "daidai";
int i;
printf("Start... ");
MYSQL *con1 ;
MYSQL_RES *res;
MYSQL_ROW row;
unsigned int num_fields;
[break]
con1 = mysql_init((MYSQL*) 0);
con1 = mysql_real_connect(con1,IPAddress,UserName,Password, NULL, Port, NULL, 0);
if(!con1)
{
printf("no con");
}
else
{
printf("con...");
}
con1->reconnect = 1;
mysql_select_db(con1, DBName) ;
if (!mysql_query(con1, "SELECT * FROM book"))
{
res = mysql_store_result(con1);



num_fields = mysql_num_fields(res);
while ((row = mysql_fetch_row(res)))
{
unsigned long *lengths;
lengths = mysql_fetch_lengths(res);
for(i = 0; i < num_fields; i++)
{
printf("[%.*s] ", (int) lengths[i], row[i] ? row[i] : "NULL");
}
printf("\n");
}
}
else
{
printf("Couldn't execute \"SELECT * FROM book\" on server.\n");

}
std::cin.get();
}

    本站是提供個人知識管理的網(wǎng)絡存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導購買等信息,,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多