發表文章

目前顯示的是 2021的文章

郵遞區號判斷器 TZIP32

圖片
噓.....此程式請勿廣傳,因為有廠商靠這個吃飯 透過此程式來判斷郵遞區號 下載處: https://tinyurl.com/6fkv2hfk 解壓縮密碼:我愛電波 需要環境: .Net Framework 3.5 使用方式: TZIP32.exe InputFile OutputFile [-icpCodeName] [-ocpCodeName]   InputFile   輸入檔案   OutputFile  輸出檔案   -icp        選擇性,輸入檔案編碼,例如:big5,utf8,ansi....,不輸入則以系統預設編碼為主   -ocp        選擇性,輸出檔案編碼,例如:big5,utf8,ansi....,不輸入則以系統預設編碼為主 範例: TZIP32.exe in_address.txt out_address.txt TZIP32.exe 主程式 in_address.txt 需要判斷的地址資料(可以單筆/多筆,檔名不設限,需為文字檔) out_address.txt 判斷結果輸出檔案(依照輸入檔案,逐行產生,前5碼為郵遞區號) 注意: 1、輸出檔案產生前須先刪除,避免系統咬住 2、輸出檔案產生前會先產一個暫存檔,通常為輸出檔的附檔名最後一個字元變成底線     例如:out_address.tx_ → out_address.txt 3、程式中有個DBF資料夾,它是郵局3+2的DBF,如要更新可以直接去下載郵局3+2的資料庫檔案直接更新即可。 底下為輸出範例 in_address.txt 高雄市林園區鳳林路1段1號4樓 台北市中正區新生南路一段58巷12-1號2F 台北市新生南路一段138號6樓之1 臺北市大安區敦化南路2段170號2樓 台北市大安區復興南路一段144號 台北市信義區信義路5段150巷332號13樓 苗栗縣竹南鎮博愛街217號5樓 台北市中山區南京東路2段2號9樓 桃園市桃園區中山路845號6樓 桃園市桃園區中山路845號9樓 台北市大安區敦化南路1段111號12樓 台北市大安區信義路四段296號7F-2 臺北市中正區羅斯福路1段9巷2弄12號1樓 台北市木柵路一段331-9號 新北市新店區寶橋路235巷129號2F 台北市文山區萬芳路40號 台中市北區進化

Keyboard LED & HDD LED Displayer(SystemLED)

圖片
This is a simple tools for display keyboard LED status & HDD read-write status . 這是一款簡單顯示鍵盤LED狀態與硬碟讀寫LED狀態的應用程序。 Most wireless keyboards do not have special key LED display, such as Caps Lock, Scroll Lock, Num Lock . 大部分無線鍵盤都沒有特殊鍵LED顯示,例如Caps Lock , Scroll Lock , Num Lock 。 Or on the remote desktop - maybe it’s different from the keyboard on the remote . 或是在遠端桌面 - 也許和遙控端的鍵盤狀態不同 It runs on .Net Framework 4.5, please make sure your environment supports it 它是運行在.Net Framework 4.5,請先確認您的環境有支援它 Download .net framework 4.5 here :  下載.et framework 4.5 套件:     https://www.microsoft.com/zh-tw/download/details.aspx?id=42642 Download SystemLED tool : 下載 SystemLED 程序:      https://drive.google.com/file/d/1eAF3vXgHqCEr5u09Nysqq8SzQCZ7KuDF/view?usp=sharing zip password (解壓密碼) : https://radio-idea.blogspot.com You can move position everywhere on your desktop , and click right button to close . 您可以在桌面任意位置移動位置,然後單擊右鍵關閉。

C# 讓電腦不要進入螢幕保護狀態 do not let windows into screen saver(lock)

圖片
 對不起,管理員 因為公司強迫要求使用者未使用電腦情況下,5分鐘要鎖定螢幕,由於是使用AD強制控制,所以使用者沒有辦法自己去關閉。 而我,因為常有需要參考畫面上的內容,在另外一部電腦操作,因此導致這部電腦一直會進入螢幕鎖定。超級麻煩又討厭。 所以開發了一隻小程式來防止Windows進入螢幕鎖定狀態。   程式下載(我只想使用): 這裡   密碼:radio-idea.blogspot.com   平台:.Net FrameWork 4.5   注意:可能會與軟體KVM衝突 這是利用Timer不斷偵測 Idle 時間 而這個 Idle 時間則是利用 GetLastInputInfo 取得鍵盤滑鼠輸入的最後時間計算與現在的時間差得到的,當這個時間差超過預定檢測的時間(我的程式碼是設定4分鐘,因為進入螢幕鎖定是5分鐘)時,會去模擬滑鼠輸入動作,這個模擬動作是透過SendInput來達成,以上這些功能都是呼叫Windows API來處理。 由於Windows API是非託管程序(Unmanaged)因此得引用 using System.Runtime.InteropServices; 主程序: using  System; using  System.Windows.Forms; using  System.Runtime.InteropServices; using  System.Configuration; namespace  DONTSLEEP {      public partial class   Form1 : Form     {          public int  Idle_time = 240; //閒置秒數(4分鐘)          public int  CCount = 0;          public bool  shacking =  false ;                   public enum   MonitorState   : int         {             MONITOR_ON = -1,             MONITOR_OFF = 2,            

財政部電子發票平台 Turnkey 接收檔案檢測程式(小工具)

圖片
Turnkey 是財政部電子發票平台的一套傳送工具 說真的,這套工具還蠻陽春的,對於有獨立伺服器的公司來說,不是很好用。 首先,它必須在使用者登入的桌面中執行,無法作為服務使用 其次,它執行排程時,背後一堆開啟的視窗不能關掉 最後,處理狀況的查詢,只能在該機器上直接查詢,無法透過遠端查詢(這個真的麻煩,尤其伺服器不能隨便把帳號密碼給使用者) 這次會開發這個工具的原因在於, 財務單位她們有自己的系統會產生傳給Turnkey的XML檔案,並直接丟到Turnkey處理的資料夾下 有時後,財務的系統沒有正常產生,導致電子發票平台一直沒收到資料,搞到去懷疑Turnkey主機有問題。 因此,特別開發這樣的程式來檢測Turnkey處理資料夾下是否有檔案被丟進來,並且整理後發郵件告知使用者。 先看看Turnkey處理資料檔案的類型與結構 相對於Turnkey處理黨案的預設路徑在 C:\Program Files\EINVTurnkey\UpCast 該路徑下的資料夾結構會有對應的名稱 下面還有分類資料夾: 每個分類資料夾下還會有3個資料夾,分別是SRC、BAK、ERR 通常新進來的檔案都會放在SRC裏面,經由Turnkeyt處理以後會從SRC移除並分類放在BAK和ERR裏面 所以這支程式就是專門在偵測SRC的檔案出現,並收集檔案名稱並以郵件回報給相關使用者 程式名稱:TKReceiveDetect.exe ( 下載 ) 環境需求:dotNetFrameWork 4.5 它的偵測方式不是用定時檢查,而是使用Windows的是件觸發,因為定時檢查的間隔可能會造成檢查遺失,就是當檔案進入SRC資料夾後,直到Turnkey排程觸發取走檔案時,如果定時檢查錯過這段時間這時就會檢查不到,而若把定時檢查設定太短,則會削弱大量系統效能(檢查這些資料夾必須使用遞迴處理),而且檢查時,若檔案此時被Turnkey處理掉,也是會造成偵測漏洞。 使用事件觸發通知好處是非常即時,而且事件被觸發時就會告知目前檔案狀況。因此不會漏掉要接收的資訊。

C# LINQ語法與SQL語法

圖片
  LINQ語法其實跟SQL語法還蠻像的,說蠻像基本上就是拿SQL語法來程式內使用而已。 學習過SQL的人太概都知道SQL的好處,雖說不上萬能,但是在找尋資料時卻是很好用的一種語法。 很多時候,不靠SQL資料庫要處理龐大內存資料真是一種痛苦,由其是不靠資料庫處理大量檔案資料或是內存資料時就是如此。如果有兩種資料須要JOIN就會需要很多程式碼,很多for/foreach迴圈去跑,因此總會希望程式碼在處理內存資料時會有像SQL這樣簡單的語法可以使用。 當然很多地方大都有在說LINQ和SQL的詳細寫法,我這邊也不再描述,我這邊主要是讓大家看看這兩種語法相似之處。 假如我有兩個資料表 學生基本資料(Student) 和 學等(Grade): Student StudentID Name Gender AddressCity AddressArea A0001 吳山汝 Female 台北市 萬華區 A0045 卓凱耀 Male 台中市 北區 A0107 劉立沛 Male 高雄市 鼓山區 Grade StudentID Class Score A0001 1.4 550 A0045 2.5 490 A0107 3.1 581 我們看看 幾個比較 假如我要選取學生資料表(Student)裏面的姓名(Name),然後過濾條件是住在台中市(AddressCity)會怎麼做呢? SQL語法: Select a.Name From Student a Where a.AddressCity = '台中市' 這三行分別就是: 選擇輸出的資料欄(Select) 資料來源(From) 過濾條件(Where) 注意: SQL對指令沒有大小寫分別,對字串不是使用雙引號,而是單引號 其中那個 a 是『別名』 如果用LINQ來寫,就會像如下: var result = ( from a in Student                       where a.AddressCity == "台中市"                      

Arduino [7SEGX8] 七段顯示器x2 使用74HC164驅動

圖片
這是一塊2排4位數7段顯示器(共8位數)的板子,由2顆74HC164控制,它的線路非常的單純排除電源之外,就只有DATA和CLOCK兩個訊號源而已。 由於它是由74HC164組成,所以資料傳輸方式就是使用位元資料PUSH出去的方式: shiftOut (data_pin, clk_pin, MSBFIRST , ~output[index]); shiftOut (data_pin, clk_pin, MSBFIRST , 1<<index); delayMicroseconds (delayTime); 從上面的範例有執行兩次shiftOut的動作 第一次是送顯示位元(bit)送出去 第二次是重送定位(Digit)第幾位數 第三行是delayMicroseconds是顯示停留時間      顯示停留時間如果太短,你會幾乎看不到顯示的數字,顯示時間太久,你會看到一個數字一個數字的移動,因為這個設計一次只能顯示一個位置的一個數字,然後利用快速切換將每個位置的數字依序跑一遍。然後利用視覺暫留的時間讓你的眼睛看到該數字出現在那裏。 模組樣式 這個模組顯示方式從第 0 位置到 7 位置,從左上方開始,於右下方結束 0 →1→2→3 4→5→6→7 這次我們做個計數器來測試,接線方式如下: 程式碼如下: #define data_pin  2 #define clk_pin   3 int16_t delayTime = 2500; // 顯示暫留時間 / / 顯示七節字碼 [0,1,2,3,4,5,6,7,8,9,空] // B00111111,B00000110,B01011011,B01001111,B01101101,B01111101,B00000111,B0111111,B01101111,B00000000 uint8_t seg7[] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F , 0x00}; uint8_t output[8]; long count = 0; void setup() {   // 設定輸出   pinMode (clk_pin, OUTPUT );   pinMode (data_p