mysql(mariadb) java 連線設定(connection string)

每次都會忘記, 因此寫下來

 
jdbc:mysql://localhost:3306/database?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8

有時候透過別人寫好的web設定界面, 會造成寫入xml錯誤 , 因此要注意所搭配系統是否使用xml當作設定檔.

例如&useUnicode=true ,寫到xml會出現  &useUnicode=true

請將多餘的amp;移除,只要留下 &useUnicode=true 即可

優化Android搜尋藍牙裝置方式(API 21)

Android 6.0(API 21)以後, 搜尋藍芽裝置的方式改成:

BluetoothAdapter.startScan (ScanCallback callback)

這種方式我一直用了很久, 也沒遇到問題.

直到有一個需求是隨時監控廣播封包,

這種寫法就會遇到問題, 無法快速取得周遭藍牙廣播資料, 因此需要修改寫法, 把能下的藥都下下去(但耗電):

final List<ScanFilter> filters = new ArrayList<>();
ScanFilter filter = new ScanFilter.Builder().build();
filters.add(filter);

final ScanSettings scanSettings =
        new ScanSettings.Builder() .setNumOfMatches(ScanSettings.MATCH_NUM_MAX_ADVERTISEMENT).setMatchMode(ScanSettings.MATCH_MODE_STICKY).setCallbackType(ScanSettings.CALLBACK_TYPE_ALL_MATCHES).setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY).build();


BluetoothAdapter.getBluetoothLeScanner().startScan(filters,scanSettings,mLeScanCallback);

打包軟體Advanced Installer對於32位元與64位元設定條件

因為偶使用eclipse開發java軟體,號稱跨平台, 但是實際上使用到eclipse SWT元件都知道, 還是要另外匯出各個平台的jar檔案,才能到不同平台上執行, 而且還必須區分32位元與64位元.

eclipse匯出的可執行的jar檔案既然區分這麼多, 那就者能依靠打包軟體幫忙, 這裡推薦advanced installer.

Advanced Installer對於32位元與64位元設定條件, 偶看得有點霧煞煞, 只好紀錄一下.

Advanced Installer 專案新增好之後, 請點選 "Organization"就可以詳細看到相關的設定

將老舊DBF資料檔案轉成Excel

以往讀取老舊DBF資料檔案 , 只要透過ODBC , 搭配MSQRY這隻程式就可以下SQL指令完成任務.

可是這些常用的工具漸漸地不再支援, 連java 8之後也不內含JdbcOdbc, 簡單的說若你有老系統的資料要讀取, 已經是非常困擾的一件事情, 因此有必要將這些資料都導出來, 方便查閱.

因此偶找到一些好用的函式庫(jdbf), 再簡單寫一個GUI程式, 可將DBF轉成Excel, 最後就再也用不到這些老舊的檔案了.  程式可在此下載

1. Windows 7 64bits or above or Ubuntu 16.04 64bits or above

2. java 8 or above

java的byte array如何擴充或相加

多個byte array 要加起來,很簡的作法

import java.io.ByteArrayOutputStream;
import java.io.IOException;
public class Tester {
   public static void main(String[] args) throws IOException {
      byte[] ArrayA = { 1,2,3};
      byte[] ArrayB = { 4,5,6};
      ByteArrayOutputStream baos = new ByteArrayOutputStream();
      baos.write(ArrayA);
      baos.write(ArrayB);
      byte[] c = baos.toByteArray();
      for(int i=0; i< c.length ; i++) {
         System.out.print(c[i] +" ");
      }
   }
}

Java如何存取USB-HID裝置-使用hid4java

有些產品必須透過USB-HID連線方式, 才能進行溝通, 偶記得以往都是使用vb6(好古老)的方式連線, java能派上用場的機會不多.

但最近有個需求, 需使用java開發windows app, 但是又必須透過USB-HID的方式讀取產品的資料.

若依照以往(好多年前), 偶寫個vb6程式, 透過hid的方式讀取資料後存成txt檔案; 最後再使用java觸發vb6程式, 處理vb6抓取出來的txt檔案.

java 呼叫 vb6 的解法, 雖然可解, 但就差在現在誰在跟你寫vb6, 身為java old school 的偶, 看到vb6就討厭, 又不想寫.net程式與usb溝通, 導致遇到這種USB-HID的需求, 我就鬱卒 🙁

Oh ya!

幾年後的今天, 想說找找open source是否有pure java的解, 終於找到了

可以使用 https://github.com/gary-rowe/hid4java 這個專案搭配 JNA library 完成 pure java 的期望.

目前偶用 hid4java 0.5.0 + JNA 4.1.0  用得很順, 還可以跨三個平台 Mac , Linux , Windows , 真是棒啊

咖啡偶習慣把這些東西作成簡單好用的工具函式庫 , 基本上就是發送指令到usb hid設備 , 然後接收到資料,請到以下連結參考:

https://bitbucket.org/inmethod/inmethodusblib

PS. 只提供usb連線的裝置超冷門的, 未來將漸漸勢微

1 2