2016年9月2日 星期五

ERROR 2006: MySQL server has gone away [QT]

隔天上班 就看到錯誤訊息
ERROR 2006: MySQL server has gone away
AP重新連線後異常無重現...

MYSQL 預設 timeout 時間 28800秒
先試著重現問題,縮短timeout時間,在code 中加入
    
  db.setConnectOptions("MYSQL_OPT_CONNECT_TIMEOUT=5"); //fail
  db.setConnectOptions("CLIENT_INTERACTIVE=5");        //fail
timeout 設定失敗,沒在預期的5秒後失效
用另外的方式,直接在 option file 即 my.ini (路徑 C:\ProgramData\MySQL\MySQL Server 5.6)中修改
但檔案裡沒看到 timeout 參數,所以直接在最下方手動新增
interactive_timeout=51
再開mysql自帶終端機檢查看看,設定是否變更

兩個系統變數
interactive_timeout
wait_timeout
都變51了.... OK!

再來改code

    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setDatabaseName("MYDB");
    db.setUserName("MYname");
    db.setPassword("MYpass");
    db.setHostName(ui->DB_Port->text());//default 192.168.0.2
    db.setConnectOptions("MYSQL_OPT_RECONNECT=TRUE");    //solution

現在就算超時,也會重新連線了!
done!

補充
參考mysql 文件,my.ini 存在位置在下面幾個地方
%PROGRAMDATA%\MySQL\MySQLServer 5.6\my.ini,%PROGRAMDATA%\MySQL\MySQL Server5.6\my.cnf
%WINDIR%\my.ini, %WINDIR%\my.cnf
C:\my.ini, C:\my.cnf
BASEDIR\my.ini,BASEDIR\my.cnf
%PROGRAMDATA% defaults to C:\ProgramData on Microsoft Windows Vista and greater, and C:\Documents and Settings\All Users\Application Data on older versions of Microsoft Windows.
%WINDIR% is commonly C:\WINDOWS.
or
C:\> echo %WINDIR%

2015年4月20日 星期一

CANBUS 發送與接收使用Socket CAN

參考文件 https://www.kernel.org/doc/Documentation/networking/can.txt
中文參考 http://blog.csdn.net/yuanlulu/article/details/7220060

控制器區域網路 (Controller Area Network, 簡稱 CAN 或 CANbus)
一種通訊協定,主要應用在汽車、工控領域。
目前版本CAN 2.0A與CAN 2.0B ,B是A的擴充。2.0B 的ID長度占29bit, 2.0A 的ID長度占11bit

節點架構


CAN Controller 通常內建於MCU內(也有獨立的ex: SJA1000),會在外接Transceiver(ex:ISO1050)轉成類比訊號。

CAN封包格式


寫基本的CAN,只需要注意仲裁欄位、控制欄位、資料欄位

Field nameLength (bits)Purpose
Start-of-frame1Denotes the start of frame transmission
Identifier (green)11A (unique) identifier which also represents the message priority
Remote transmission request (RTR)1Must be dominant (0) for data frames and recessive (1) for remote request frames (see Remote Frame, below)
Identifier extension bit (IDE)1Must be dominant (0) for base frame format with 11-bit identifiers
Reserved bit (r0)1Reserved bit. Must be dominant (0), but accepted as either dominant or recessive.
Data length code (DLC) (yellow)4Number of bytes of data (0–8 bytes)[a]
Data field (red)0–64 (0-8 bytes)Data to be transmitted (length in bytes dictated by DLC field)
CRC15Cyclic redundancy check
CRC delimiter1Must be recessive (1)
ACK slot1Transmitter sends recessive (1) and any receiver can assert a dominant (0)
ACK delimiter1Must be recessive (1)
End-of-frame (EOF)7Must be recessive (1)
CAN BUS的操作可以如同使用SOCKET。
參考Linux下範例 candsend.c   candump.c
看完除了會can 的發送與接收,也可以學到命令列參數使用方法 (function: getopt_long)

以下簡單範例:
Setting :
    struct can_frame frame;
    struct ifreq ifr;
    struct sockaddr_can addr;
    char *interface = "can0";
    int family = PF_CAN, type = SOCK_RAW, proto = CAN_RAW;

    s = socket(family, type, proto)
    strncpy(ifr.ifr_name, interface, sizeof(ifr.ifr_name));
    if (ioctl(s, SIOCGIFINDEX, &ifr)) {
        perror("CAN ioctl");
        return 1;
    }
    addr.can_family = family;
    addr.can_ifindex = ifr.ifr_ifindex;

    if (bind(s, (struct sockaddr *)&addr, sizeof(addr)) < 0) {
        perror("CAN bind");
        return 1;
    }
Send :
//sendcanbus();
            frame.can_id = 0x0321;
            frame.can_dlc = 4;
            frame.data[0] = 0;
            frame.data[1] = 1;
            frame.data[2] = 2;
            frame.data[3] = 3;

            ret = send(s,&frame,sizeof(frame),0);
Read :
            //dropt the timeout packets
            while(nbytes = recvfrom(s,&frame,sizeof(struct can_frame),0,(struct sockaddr*)&addr,&len)>=0)
            {
                printf("\r\nrecvfrom nbytes %d",nbytes);
                memcpy(b,&frame,sizeof(frame));
                for (i=0 ; i < sizeof(struct can_frame) ; i++)
                {
                    printf(" 0x%x ",b[i]);
                }
                usleep(10000);//
            }
           

2014年3月28日 星期五

IP Alias

需求:
  1. 人機有兩顆實體網路port ,而系統只有一個,切換人機按鈕決定走哪一port。
  2. UDP協定
問題:
    人機兩個實體port網域(30.x , 29.x) 不同,而系統預設網域為.30.x,若切換到port2,會發生  ENETUNREACH 101     /* Network is unreachable */

解決方法:
    系統端產生網路IP Alias,同一實體網卡包兩組IP


 人機網卡配置
eth0      Link encap:Ethernet  HWaddr 00:19:23:05:37:B1
          inet addr:192.168.30.1  Bcast:192.168.30.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:66267 errors:0 dropped:0 overruns:0 frame:0
          TX packets:50736 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:15513046 (14.7 MiB)  TX bytes:6076898 (5.7 MiB)
          Interrupt:29

eth1      Link encap:Ethernet  HWaddr 00:E0:3D:F4:61:17
          inet addr:192.168.29.1  Bcast:192.168.29.255  Mask:255.255.255.0
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Interrupt:79

系統終端下指令,產生網路IP Alias,且設定IP
ifconfig eth0:0 192.168.29.100
系統端網卡配置結果:
eth0      Link encap:Ethernet  HWaddr 12:34:56:78:9A:BC
          inet addr:192.168.30.2  Bcast:192.168.30.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:55863 errors:0 dropped:0 overruns:0 frame:0
          TX packets:50735 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:7074697 (6.7 MiB)  TX bytes:12358948 (11.7 MiB)
          Interrupt:67

eth0:0    Link encap:Ethernet  HWaddr 12:34:56:78:9A:BC
          inet addr:192.168.29.100  Bcast:192.168.29.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Interrupt:67

codeblock prettyprint 用法

<pre class="codeblock prettyprint">
public class HelloWorld {

    public static void main (String[] args) {
        System.out.println("Hello, world!");
    }
}
</pre>

2012年11月14日 星期三

extern問題造成的錯誤

今天遇到的情形令人嘔血

a.c 宣告
byte X[8] = {0};

b.c 引用
extern X[] ; 
extern byte X[8] ;

若使用錯誤方式,VC6.0 compiler 過得去,但把值印出來看就會發現錯誤了。
不曉得其他compiler有沒有防此錯誤。

還是完整點寫出來比較妥當。

2012年3月21日 星期三

vs2005 + Access 2007

----筆記---  卡關中

ref   逐步解說:Web 網頁中的基本資料存取
逐步解說:建立可以顯示 Access 資料庫資料的 Web 網頁
無法順利下一步
因為只有提供 .mdb (Access 2003) 連線方式
而我的是 .accdb (Access 2007)

所以  HOW TO:使用 SqlDataSource 控制項連接至 Access 資料庫
http://msdn.microsoft.com/zh-tw/library/hktw939c(v=VS.80).aspx
繫結至資料庫
http://msdn.microsoft.com/zh-tw/library/ms178361(v=VS.80).aspx
http://msdn.microsoft.com/zh-tw/library/ms247233(v=vs.80).aspx

ref   ASP.NET用控件连接Access2010数据库报错的解决方法
http://www.soaspx.com/dotnet/asp.net/tech/tech_20111103_8235.html

但在選擇 provider 時,無法選擇 oledb.12xxx版本

http://cn-asp.net/html/c10/2009-09/755.htm
http://www.dotblogs.com.tw/maduka/archive/2011/09/14/36150.aspx


檢查Oledb  Driver

1. 檢查

系統管理工具->資料來源ODBC-> 驅動程式
有沒有 Microsoft Access Driver (*.mdb, *.accdb) / 版本: 12.xxx 開頭

2. 檢查
http://social.msdn.microsoft.com/Forums/zh-TW/238/thread/dd104ef2-b793-4fa0-9fb2-e6f9e8aab4e8/
VS2005 伺服器總管->資料連接->加入資料連接->Oledb/其他->確定-> Oledb 提供者
有沒有 Microsoft Office 12.0 Access Database Engine OLE DB Provider
3. 承2 將資料庫名稱含路徑填入伺服器名稱欄位,測試是否可正常連線。
資料庫檔案 引入時放在App_Data資料夾下,另外生成Db資料夾,且含此副本。路徑選擇App_Data這個。

所以主機有12版driver, 也可以連線,F5正常顯示

增加可編輯、刪除功能,在debug mode 時, 編輯完畢進行更新動作出現錯誤

Error: UPDATE 或 DELETE 查詢不能包含多重值欄位
待解......

尚未嘗試
http://www.haogongju.net/art/848527
http://msdn.microsoft.com/zh-tw/library/ms247297(v=vs.90).aspx


http://forum.synology.com/enu/viewtopic.php?f=20&t=29338&p=178101&hilit=joomla#p178101

2012年3月20日 星期二

XP虛擬機並安裝IIS,使用VMware

--------筆記-------
老大說要架設Web Server ....

原本打算用 XAMP 整套給他下去,但後來想想 php寫到後面難debug,而且以前寫過了,沒啥新意,所以目前打算採用另一方案
IIS + Access 2003 + C#
用Access 是因為在office裡面眾多軟件中,我從來沒正眼瞧過他,跟隨了這麼久也該給他機會了XD
而我也沒用過C#寫過網頁,正好來練練。

目前手上硬體設備
NB         OS:XP (192.168.20.76)
配備i5-M460 2.53GHz 6G
Desktop OS:WIN7  (192.168.20.99)
配備i5-2300 3.3GHz 8G



開始建立測試環境,主要步驟如下
STEP1. VMware (7.0.1) + XP
STEP2. 安裝 VS2005
STEP3. 安裝 IIS
STEP4. VMware 網路設定


STEP1. VMware (7.0.1) + XP

XP安裝真的好快..順啦!

STEP2. 安裝 VS2005
這花了一點時間,含MSDN 差不多20分鍾吧。

STEP3. 安裝 IIS ref http://msdn.microsoft.com/zh-tw/library/33487zw6(VS.80).aspx
參考 逐步解說:在 Visual Web Developer 中建立基本 Web 網頁  作下列動作
在VS2005執行
檔案->新增->網站 
click "ASP.NET網站"   位置:HTTP  click "確定"
馬上F5偵錯
warning:  ASP.NET組態未設定debug
"確定"

error : 無法存取 IIS Metabase  
solution refer ASP.NET 無法存取 IIS Metabase解決方法


cmd -> cd C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\
下 aspnet_regiis -i  重新安裝 asp.net 2.0.50727
Restart IIS
再來F5
error: mutuex 錯誤
錯誤:無法在Web 伺服器上啟動偵錯
... 看了一些關於ASP.net權限的網頁 解決了

STEP4. VMware 網路設定
1.剛開始使用NAT 方式再利用port forwarding 無法成功
2.測試 NB ping 桌機 ,  失敗
3.修改防火牆輸入規則 , icmp 歸在印表機連線
Windows防火牆設定 > 進階設定 > 輸入規則 > 檔案及印表機共用(回應要求 - ICMPv4-In)
選擇「啟用規則」即可
4.重ping  成功!
5.IE KEY網址,連線失敗, 未轉送
6.改成 Bridge 橋接 , 自動設定IP192.168.20.170
7.ping 桌機OK , KEY網址 ERROR !
8.ping VM error
9.開大絕  VM 關閉防火牆  
10. ping  ' IE  OK

REF:
如何運用 Windows XP 疑難排解 TCP/IP 的連線問題
http://support.microsoft.com/kb/314067/zh-tw
http://ithelp.ithome.com.tw/question/10087936

VMware 的 Bridged, Host-only 和 NAT 網路型態
http://softsmith.blogspot.com/2008/02/vmware-bridgedhost-only-nat.html

如何善用 VMware 的四種網路環境
http://phorum.study-area.org/index.php?topic=47392.0
 
VMWare三種工作模式(bridged、NAT和host-only
http://jamsan.blog.hexun.com.tw/24812738_d.html

VMware架設伺服器允許外部連入解決方案(NAT mode)
http://blog.xuite.net/sphjlc062218/thinking/32175554-VMware架設伺服器允許外部連入解決方案(NAT+mode)




 http://blog.xuite.net/jialiang/programs/38849848-【FreeBSD】利用VirtualBox啓用主機界面和NAT功能建立有效的測試環境

JQUERY
http://kelp.phate.org/2011/03/jquery-fullcalendar-aspnet-mvc.html
http://msdn.microsoft.com/zh-tw/ee787054

ASP.NET
http://www.microsoft.com/taiwan/msdn/aspdotnet/
http://www.asp.net/downloads/essential
http://quickstarts.asp.net/QuickStartv20/aspnet/Default.aspx
http://yes.nctu.edu.tw/Lecture/ASP2005/index.htm
http://www.allenkuo.com/EBook5/default.aspx?TreeNodeID=8
http://www.allenkuo.com/EBook5/view.aspx?a=1&TreeNodeID=8&id=152
http://www.w3schools.com/aspnet/aspnet_examples.asp

IIS
http://60.251.1.52/taiwan/msdn/books/ataglance/SecNetch08.htm#configuringsecurity
http://60.251.1.52/taiwan/msdn/books/ataglance/SecNetch08.htm#accessingnetworkresources