RDS的raw data throughput為1187.5bit/s,一個封包是104bit/s,一秒鐘大約可以傳11.4個封包。一個封包扣除checksum後的有效資料是64bit,而扣除header之後的payload為32~40bits。這樣有多快?換算成一般的單位就是0.0456KB/s。
這麼慢的傳輸,可以做什麼呢?可以做的事很多,RDS定義了0A/0B一直到15A/15B共32種不同的應用。我們只挑幾個比較常見(其實是我只玩過這幾個)的來介紹:
PS(Program Service): 電台名稱,一共八個字元
![- priv - ? FM RDS fm收发芯片 rds](http://img.413yy.cn/images/31101031/31091031t014db19356d3bf7b99.jpg)
AF(Alternative frequency): 替換頻率,在長途移動的時候可以自動幫你跳頻
RT(Radiotext): 電報訊息,最多可以到64個字元,一般會用來顯示目前的音樂名稱
CT(Clock-time and date): 包含日期、時間、時區,每分鐘發送一次。精度在+-0.1秒。
TMC(Traffic Message Channel): 即時路況
另外還有像ODA(Open Data Application),基本上你愛怎麼定義裡面的東西都不會有人管你。
目前在台北可以收得到PS的電台有
1. 警廣 94.3 = RDSIOT12
2. 警廣104.9 = RDSIOT11(前幾個月104.9收不到,原因不明)
3. ICRT 100.7 = ICRT(前幾個月看,是FM100.7)
4. 漢聲 106.5 = V.H.B.N.
漢聲都一直很容易收到,而警廣次之,ICRT通常要等很久,有時候訊號不佳就根本收不到。
AF不曉得狀況,像94.3他就只有一個94.3而沒有第二個頻率可選,而且「聽說」台灣有些電台RDS會亂送,結果車用音響導致頻率亂跳。
RT目前沒看到有人用的,再來TMC方面,目前有兩個系統,一是警廣(Garmin有在用),二是台北之音、ICRT、亞洲廣播網、雲嘉電台(Mio),不過除了ICRT以外好像只有專心在送TMC。
最後要提的是CT(校時),看起來只有漢聲有發。它的格式還滿特殊的,因為日期是Julian date,所以要用一串我根本看不懂的公式(註)去轉出來。再來會有UTC時刻和時區,就可以算出目前的時間。前兩天寫了手機上的FM校時程式(不必和我要,這個沒辦法通用所有的手機)。只要聽漢聲電台就會自動校正手機的時間,還滿好玩的:D
補充一下,五月份來到上海出差,發現上海這邊也收得到三台FM RDS電台資訊。有91.4(顯示SH91.4)、101.7(顯示101.7)、107.7(顯示SHANGHAI)。
根據測試,三個電台都有打開RDS校時的功能,不過和台灣漢聲的精準度(誤差在一秒以內)相比,只能算是聊勝於無,91.4/101.7和正確時間有二十秒左右的差異,而107.7的校時資訊則根本就是大錯特錯,比UTC+8快110分鐘左右,這…還不如不開對吧?
註:
Julian data的公式…我數學不好看嘸
//Convert Julian date to standard time
//EN50067:1998 Annex G
int Y, M, D, K;
Y = (int)(((double)jul_date - 15078.2)/365.25);
M = (int)(((jul_date - 14956.1)-(int)(Y*365.25))/30.6001);
D = jul_date - 14956 - (int)(Y*365.25) - (int)(M * 30.6001);
if ((M == 14)||(M == 15)) K=1; else K=0;
Y = Y + K + 1900;
M = M - 1 - (K*12);