C# data type

How to create DLL by Visual Studio

前言 之前因都需要使用CMD呼叫外部工具去讓PC對微控制器發送HID指令,這邊就想嘗試把這塊整合成DLL使用call DLL方式去達成,一來可以簡化操作也可以比較快速達到目的,今天彙整網路上各個資訊把如何使用Visual Studio生成DLL做完整 建立一個 DLL專案 選擇建置DLL專案,並且新增一個 .h 的檔案 官方文件中提供了兩種方式可以匯出dll中的函式: 首先新建立標頭檔案“XXX.h”,它的作用是用來宣告需要匯出的函式介面。 在新增的標頭檔中,填入以下程式碼。 再來要加入「C++ 檔(.cpp)」 然後我們需要在‘XXXXl.cpp’中實現在‘XXXXl.h’中被宣告的函式,程式碼如下: 與其相對的還有一句程式碼是__declspec(dllimport),此修飾符的作用是告訴編譯器和連結器被它修飾的函式或變數需要從DLL匯入 這是由於C語言沒有過載,不會改變函式名。而C++中有過載,在編譯過程中會根據返回值和引數修改函式名。 如何呼叫dll 參考

How to create DLL by Visual Studio Read More »

Finding absolute path in C code

前言 近期因客戶臨時要求須要把原先相對路徑的指向,全部修改成絕對路徑,查詢後這個方式僅能使用windows API去組合,但因開發工具特別被綁定只能使用C,C++的語法會出現無法編譯現象,因此這邊會搭配特數字串裁切方式協助各位製作出尋找絕對路徑的方式 相對位置 這邊先介紹相對位置,因撰寫比較簡單而且只要確定執行檔案開啟參照點使用以下方式去撰寫即可操作可以看到這邊僅從exe執行檔位置起走,找尋對應參照 但使用相對位置會出現從其他地方指向該資料夾執行exe會導致,周邊相對位置無法正常被執行,因路徑找不到,因此這邊如果有需求是需要從其他路徑指向或CMD方式從其他目錄去開起執行檔,就需要改成絕對位置 絕對位置 絕對位置這邊就會需要使用到windows API,因但純C會有點難實作主要借助主要使用到的Function為GetModuleHandleEx與GetModuleFileName,這邊就可以獲取到目前執行檔的絕對位置,但這邊還包含執行檔本身名稱,因此會需要再把執行檔名稱去除,但目前有些project不支援C++因此PathRemoveFileSpec可能會無法使用下面提供一小段範例去找出絕對路徑 結果圖如下 去除執行檔字串 這邊提供2種方法第一種是使用C++ windows API 另一種方式須先轉義成char在操作,基本上就是搜尋關鍵字位置,然後再複製到新的區域截掉不需要部分 參考

Finding absolute path in C code Read More »

C# Float and Double Convert to Hexadecimal

前言 因MCU或uDrive在傳輸給UI時Double和Float會透過IEEE754轉成16進制傳輸,因此這邊會介紹2種方法去轉成16進制與範例程式以供參考 理論 浮點數表達式是計算機內用來表示小數的方法,由IEEE規定組成格式,並用有32 bits單精度(float)與64 bits雙精度(double)的資料型態 浮點數的表達方法主要由4個參數組成,分別是正負符號、尾數(m)、基數(n)、指數(e) : 可以看到右圖,主要Float 與Double不同地方是在尾數存取與指數位精準位數不同,這邊先以Float為範例推演給各位觀看如下圖 範例程式 Double converter to Hex Float converter to Hex Hex converter to Float Hex converter to Double Doma結果 其他方法 上面為通用方法,但可以看到存取位元較多今天如果想讓存取位元較少可以參考下面範例,但有條件限制如下 * matrix format:* size: 32 bits* bit[0]: +/-* bit[7:1]: integer* bit[31:8]: decimal* max.: 127.9999999* min.: -127.9999999 Double converter to Hex Hex converter to Double gains

C# Float and Double Convert to Hexadecimal Read More »

C# Substring 定義及七種用法(分割拆解認關鍵字方法)

前言 因我們可由COM PORT接收到MCU資訊,但其資料是一串字串並未分隔。EX: 由MCU輸出”System restart \n\r” +”MCU restart ok\r\n”=>這邊C# UI接收到的會是”System restart \n\rMCU restart ok\r\n”不會切割成2句文字因此本章節會介紹如何做字串切割如下清單與確認關鍵字,方便資料讀取 從字串取得部份字串 從字串取得前面n個字元部份字串 取得部份字串從指定的 startIndex 處開始, endIndex:到指定的 endIndex處結束 取得某個字元後或前的部份字串 傳回字串第一次出現位置 取得兩字串間的部份字串 用字元分離字串再分離字串成部份字串 C#對中文字串的擷取 定義 命名空間:System組件:mscorlib.dll, netstandard.dll 從這個執行個體擷取子字串。 這個成員是多載的。 如需這個成員的完整資訊,包含語法、使用方式和範例,請按一下多載清單中的名稱。 程式範例 C# String.Substring 方法 在C#跟.NET中,字串可以用字串型別來表示,String.Substring方法是C#裡從字串的執行個體擷取部份字串,這個方法有兩個多載的方式: Substring(Int32):從字串執行個體擷取部份字串。 部份字串會在指定的字元位置開始並繼續到字串的結尾。 Substring(Int32, Int32):從字串執行個體擷取部份字串。 部份字串起始於指定的字元位置,並且具有指定的長度 從字串取得前面n個字元部份字串 字串的字元是從0開始索引的,字串第一個字元的位置是從0開始的。 假設你要從字串中取得前面12個字元的部份字串,可以使用Substring方法傳遞開始的索引0跟12的長度,就可以從字串取得前面12個字元的部份字串。 取得部份字串從指定的 startIndex 處開始, endIndex:到指定的 endIndex處結束 Substring方法的第一個參數是部份字串開始的索引,第二個參數是包括空白字元在內的字元數,可以使用String. Length找出字串結束的位置。 下面的範利用來找第八個位置到最後的部份字串 也可以透過Substring的第二參數來取得一些字元,下面的範例可以從第八個位置取得15個字元的字串。 取得某個字元後或前的部份字串 使用Substring取得第一次出現的指定字元前的部份字串,可以透過第一個參數為0,第二個參數為指定字元的位置(長度)來做。PS:此用法為UI中切割出資料主要用法 下面的程式是取得指定字元後的部份字串:

C# Substring 定義及七種用法(分割拆解認關鍵字方法) Read More »

Shopping Cart