發表文章

目前顯示的是 7月, 2011的文章

無網路傳輸設定

兩台電腦插入一條以跳接好的網路線並將DNS一下列方式設定 區域連線 >> 內容 TCP/IPv4 >> 使用下列的IP位子 >> 192.168 .0.X 另一端IP結尾設不同,完成後即成為同意網絡 ex: 主機端:192.168.0.11 ,客戶端:192.168.0.12

c++包opencv DLL C#使用

C++ 新增下方include並寫setpath與pshow兩方法。 前者為得到圖片位址並回傳指標,後者利用得到的指標去取得圖片位址並顯示圖片。 #include "cv.h" #include "cxcore.h" #include "highgui.h" #include <iostream> using namespace std; extern "C" _declspec(dllexport) IplImage* setpath(); _declspec(dllexport) IplImage* setpath() { IplImage *image = cvLoadImage("D:\\test.jpg" ,1); IplImage* output = image; return output; } extern "C" _declspec(dllexport) void pshow(IplImage *image); _declspec(dllexport) void pshow(IplImage *image) { cvNamedWindow("show" ,1 ); cvShowImage("show" , image); cvWaitKey(); } C#中要使用指標,需先至專案 >> 屬性 >> 建置 >> 勾選"容許Unsafe程式碼",在所要用的方法前加上unsafe即可

background (visual studio 2008)

圖片
程式功能:按下開始按鈕,label會從0開始增加,按下停止則會停在當前數值 step1. 開啟visual studio 2008建立一個window Form專案,在此以backgroundPro為方案名稱 (檔案 >> 新增 >> 專案  >>專案類型選擇 visual C# >>範本選擇 Window Form 應用程式) step2. 利用工具箱建立兩個button一個label與一個background (檢視 >>工具箱) step3. 將button1屬性中的Name改為Start,Text改為開始,button2的Name改為Stop,Text改為停止。 (此步驟可不做) step4. 在background的事件中,DoWork與RunWorkerCompleted點兩下增加程式碼,按鈕Click點兩下增加(亦可在按鈕上點兩下便會增加Click事件) 至此會自動產生四個事件程式碼 step5. 在background開始執行前,將 WorkerSupportsCancellation設定為true,才可呼叫CancelAsync。 在DoWork事件中跑回圈並顯示於label、RunWorkerCompleted事件中顯示結束訊息、Start_Click開始執行背景程式、Stop_Click停止背景程式 範例程式碼 namespace backgroundPro {     public partial class Form1 : Form     {         int a;         public Form1()         {             InitializeComponent();             backgroundWorker1.WorkerSupportsCancellation = true;             //將WorkerSupportsCancellation才可呼叫CancelAsync,否則會發生例外錯誤         }         private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)  

#define、EntryPoint

更改保留字- #define #define 取代保留字名稱 要取代之保留字 像是#define Dll_Out _declspec(dllexport)  便是將 _declspec(dllexport) 以 Dll_out取代 以前篇" visual studio 2005 c++製作dll (for C#) "為例 *************************************************** //原code extern "C" _declspec(dllexport) int plus(int); int _declspec(dllexport) plus(int a) { int b = a+a; return b; } -------------------------------------------------------------------------- //更改後 #define  ECD extern "C" _declspec(dllexport) ECD int plus(int); int _declspec(dllexport) plus(int a) { int v  = a+ a; return v; } **************************************************** 將原DLL中方法以不同名稱使用 -EntryPoint EntryPoint = "方法名稱" static extern int 新方法名稱(資料型態 資料變數); 以前篇" C#中導入DLL" 為例 ----------------------------------------------------------- //原code   static void Main(string[] args)         {            int add = plus(4);               Console.WriteLine(add);             Console.ReadKey();         }         [DllIm

C#中導入DLL

圖片
延續 上一篇 ,將自製的DLL檔導入至C# 開啟visual studio 2005 > 檔案 > 新增 > 專案 > 選擇visual C# > 主控台應用程式>輸入名稱及方案名稱及選擇創立的位置 >確定 (在此以runDLL) 出現此畫面即可在Program.cs中導入DLL及呼叫其方法 以 DllImport導入所要的 .dll ,搭配 static extern導入所要的方法 使用方式為下 [DllImport("DLL檔名")]  static extern  type  FunctionName (  type   parameter1 ); //***************************** //在此以 上一篇 所寫之方法使用 static void Main(string[] args)         {             int add = plus(4);   //所輸入的數值會自己加自己並回傳             Console.WriteLine(add);             Console.ReadKey();         }         [DllImport("product DLL.dll")]         static extern int plus(int a);     } //****************************** 將所要導入的 .dll放在C#專案中 bin資料匣中的Debug裡 (在此以product DLL.dll) 確定上述步驟都完成後選擇偵錯 > 開始偵錯 會得到以下結果

visual studio 2005 c++製作dll (for C#)

圖片
開啟visual studio 2005 > 檔案 > 新增 > 專案 > 選擇visual C++ > win32 > win32主控台應用程式 >輸入名稱及方案名稱及選擇創立的位置 >確定 (在此以product DLL) 會顯示此畫面,點選下一步或左方應用程式設定 選擇DLL(D)其他不選,按下完成。 出現此畫面即可在name.cpp中打上所要的方法 (在此為CproDll.cpp) 一定要在含式前面加上 "extern "C" _declspec(dllexport) int  FunctionName (  type (parameter1)  )"否則之後導入C#會找不到進入點(曾為了這個卡了兩天...) 因為是要匯出用的,所以必須在函式型別前面再加上"_declspec(dllexport)" _declspec(dllexport) type FunctionName( type parameter1, type parameter2, ... ){  function body  } //************************************* //以此為範例程式碼 extern "C" _declspec(dllexport) int plus(int); int _declspec(dllexport) plus(int a) { int b = a+a; return b; } //************************************* 寫好後選擇建置>建置方案 完成後去專案所在位置的中的debug資料夾裡即有 XXX.dll (在此為product DLL.dll) C#中導入DLL

執行緒委派方式

using System; using System.Collections.Generic; using System.Text; using System.Threading;         //http://www.dotblogs.com.tw/atowngit/archive/2009/12/19/12547.aspx namespace Thread_Practice {     class Program     {         static void Main(string[] args)         {             Program pro = new Program();            pro.Start();            // Console.ReadKey();         }         private void Start()         {          /* 無參數用法           * //建立一個執行緒,並且傳入一個委派物件 ThreadStart,並且指向 PrintOddNumber 方法。                 Thread thread1 = new Thread(new ThreadStart(PrintOddNumber));             //設定執行緒的 Name             thread1.Name = " 1 thread";             //建立一個執行緒,並且傳入一個委派物件 ThreadStart,並且指向 PrintNumber 方法。             Thread thread2 = new Thread(new ThreadStart(PrintNumber));             //設定執行緒的 Name            thread2.Name = " 2 thread";         */             //有參數用法             Thread thread1 = new Thread(new  ParameterizedThre

TCP_client

using System; 以下為發送文字 using System.Collections.Generic; using System.Text; using System.Net; using System.Net.Sockets; namespace TCP_client {     class Program     {         public static void Main(string[] args)         {             // 建立一個 IP 位址 (IPAddress)。             IPAddress ipAddr = IPAddress.Parse("192.168.0.43");             IPEndPoint ipep = new IPEndPoint(ipAddr , 1000);             //前者為IP位址,後者為port             Console.WriteLine("IP位址與port: " + ipep);             Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);             // Socket(執行個體可以使用的位址配置 , 通訊端類型, 指定通訊協定的類別)             server.Connect(ipep);   //進行連線                     while (true)             {                 string input = Console.ReadLine();                 if (input == "exit")                     break;                 byte[] data = Encoding.UTF8.GetBytes(input);    //編碼                 //byte[] data =

TCP_Server

 接收client端發送之文字 using System; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; namespace TCP_Server {     class Program     {         public static void Main()         {             // IPAddress :建立一個 IP 位址 (本機位置IP)             IPAddress ipAddr = IPAddress.Parse("192.168.0.43");                       IPEndPoint ipep = new IPEndPoint(ipAddr, 1000); //前者為IP位址,後者為port (本機)             Socket newsock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);             newsock.Bind(ipep); //建立連結             newsock.Listen(10); //使之可接收             while (true)             {                 Socket client = newsock.Accept();                 IPEndPoint clientep = (IPEndPoint)client.RemoteEndPoint;    //RemoteEndPoint取得發送方IP                 Console.WriteLine("Client End Point = " + clientep);                 Console.WriteLine("等待client端資料");                 // create a new t

VMware Workstation 6.0.2

VMware 安裝步驟 將 VMware_Workstation_6.0.2 壓縮檔解壓縮 選擇 ”VMware-workstation-6.0.2 安裝 ” 資料夾 執行 VMware-workstation-6.0.2.exe 安裝過程: 1.           選擇 Typical ,按 next 進行下一步 2.           安裝路徑預設為 C:\Program Files\Vmware\Vmware Workstation 若要更改選擇 Change… ,路徑設定好按 next 進行下一步 3.           可直接按 next 進行下一步 4.           選擇 Installd 開始進行安裝 5.           要求輸入使用者、公司及序號。前兩項不用改,序號產生方式為至 ”VMware-workstation-6.0.2 安裝 ” 資料夾點選 ” VMware_KeyGenN” 資料夾執行 New.keygen.exe , Type 版本選擇 Vmware Workstation ACE Edition for Window v6 ,點 Generate 按鈕,將 Serial 所產生的序號貼至序號位置。 6.           安裝完成要求重新開機 VMware-workstation 中文化 將 ”VMware-workstation-6.0.2 安裝 ” 資料夾中 ”cht” 資料夾中的 vmapputil.dll 及 vmware 複製至所安裝的位置並覆蓋 執行 VMware-workstation 首次執行會出現一視窗,選擇 Yes, I….agreement 新建虛擬機 > 典型 > 選擇作業系統及版本 > 虛擬機名稱及所要存放位置 > 選擇網路類型 > 選擇虛擬機硬碟大小 > 開始創造虛擬機 選擇啟動該虛擬機,進入後開始灌作業系統即可。

vs2005 with OpenCV 2.0

1. Microsoft Visual Studio 2005 2. OpenCV 2.0(至官方網站抓取與本機搭配版本) 3. CMake 2.8.0 Step1: 先將上述軟體不改路徑安裝完成,執 " CMake (cmake-gui) " 。 Step2: 1. 在 " Where is the source code: " 選擇 "OpenCV 2.0" 的安裝目錄位置,若不改安裝路徑則為” C:\OpenCV2.0 ”。 2. 在 " Where to build the binaries: " 選擇一個 存放編譯後資料 的資料夾。 範例路徑為 " C:\CVtovs05 " 。 Step3: 1. 按下 " Configure " 鈕。 2. 在 " Specify the generator for this project " 選擇 " Visual Studio 8 2005 " 。 3. 按下 " Finish " 。 (若存放路徑資料夾未建立,會詢問是否建立), 等下方顯示Configuring done表示已跑完。 Step4: 接著按下 " Configure " , 等下方顯示Configuring done表示已跑完。 Step5: 接著按下 " Generate ", 等下方顯示Generating done表示已跑完。可關閉 CMake。 Step6: 到 " C:\CVtovs05 " 點選 " OpenCV.sln " 檔。 Step7: 1. 選擇 " Debug " 模式。 2. 在 " 方案 'OpenCV'(27 專案 ) " 案右鍵。 選擇 " 重建方案 (R) " ,等它重建完畢出現 0 失敗的訊息,再執行 (注意!!一定要0失敗) Step8: 1. 在 " INSTALL" 案右鍵點選 " 重建 (E) " 。