
另一個消息是....中央氣象局提供的

強烈颱風"龍王"也要一起去......

RedHat 裡面有 /etc/redhat-release
Mandrake 有 /etc/mandrake-release
B2D 有 /etc/b2b-release
可是 Debian , ubuntu , slackware 沒有類似的檔案
slackware有/etc/slackware-version這個檔
debian也有 /etc/debian_version這個檔案
剛好 ubuntu 也有 /etc/debian_version這個檔案
所以ubuntu沒辦法用這個方式跟debian區分
當我試著cat /proc/version . 會出現
代碼:
Linux version 2.6.10-5-386 (buildd@terranova) (gcc version 3.3.5 (Debian 1:3.3.5-8ubuntu2)) #1 Tue Apr 5 12:12:40 UTC 2005
可以偷偷的發現是ubuntu , 但是不知道是哪個版本
但是Debian就很帥氣的顯示
代碼:
Linux version 2.2.20-idepci (herbert@gondolin) (gcc version 2.7.2.3) #1 Sat Apr 20 12:45:19 EST 2002
連Debian的字眼都沒顯示
最後當我
cat /etc/issue
ubuntu 會出現 Ubuntu 5.04 "Hoary Hedgehog" \n \l
Debian會出現 Debian GNU/Linux 3.1 \n \l
所以 , 我個人覺得 cat /etc/issue 應該可以獲得最好的資訊
#apt-get install kernel-package完成後 /usr/share/和/usr/share/doc下就有kernel-package目錄了
#apt-get install ncurses-dev還有kernel source. 因為只想install自己現在版本的source code
#apt-get install fakeroot
#uname -a看一下是2.6.8
#apt-get install kernel-source他會列出所有的version,並說要指定版本才行,所以挑了一個2.6.8的...
#apt-get install kernel-source-2.6.8但是竟然download不下來,改了一些deb site也是一樣,只好改download 2.6.10
#apt-get install kernel-source-2.6.10奇怪,一直錯,只好follow他的instruction加上--fix-missing
#apt-get install kernel-source-2.6.10 --fix-missing應該是firewall的關係,到41%又fail
wget http://www.tw.kernel.org/pub/linux/kernel/v2.6/linux-2.6.13.tar.gz
deb-src http://apt.debian.org.tw unstable main
bit samestr(char *data,const char *cstr)
{
if(data[i]==cstr[i]){
.....
char temp;
temp=cstr[i];
if(data[i]==temp({
....
Baudrate = Fosc/(64(X+1))
Baudrate = Fosc/(16(X+1))
20,000,000/(64 * 9600) -1 = 33.15
20,000,000/(16 * 9600) -2 =130.2
SPBRG=130;下面是用中斷作的簡單的tx sending.
BRGH=1;
SPEN=1;
SYNC =0;
TXEN=1;
while(1){
while(!TXIF);
TXREG='A';
}
bit TxOk=0;
char TxBuf[10];
char Txi;
char TxLen;
void interrupt inthandler(void)
{
if(TXIF){
if(Txi < TxLen){
TXREG=TxBuf[Txi];
Txi++;
}else{
TxOk=1;
TXIE=0;
}
}
}
const char *outstr="Hello!";
void main(void)
{
char i;
SPBRG=130;
BRGH =1;
SPEN =1;
SYNC =0;
PEIE=1;
GIE =1;
TXEN=1;
i=0;
TxLen=0;
while(outstr[i]!=0x00){
TxBuf[i]=outstr[i];
TxLen++;
i++;
}
TxOk=0;
TXIE =1;
while(!TxOk);
while(1);
}
KeyScan一次Scan K1,K2,K3三個key。Write Command代表寫入七段顯示輸出記憶體
Scan Line有SG1 - SG10。
Read Data依照Scan的內容,每一個byte只有用到前6個bit,代表兩個Scan Line。
所以keyscan總共有5個byte。
一個七段顯示器需要12個bit,使用2個byte。
所以write command使用的memory有 7 x 2 = 14 byte
void Pt6961Init(void)
{
char i;
STB=1;
SCL=1;
// command 2 : memory r/w, address inc
STB=0;
sout(0x40);
STB=1;
// command 3 : address set, and data
STB=0;
sout(0xC0);
for(i=0;i<14;i++)
sout(0x00);
STB=1;
// command 1 : display mode : digit & seg
STB=0;
sout(0x02);
STB=1;
// command 4 : disp on/off, disp duty
STB=0;
sout(0x87);
STB=1;
// command 1 : display mode
STB=0;
sout(0x02);
STB=1;
// command 4 : disp on/off, disp duty
STB=0;
sout(0x8F);
STB=1;
}
void sout(char data)
{
char i;
for(i=0;i<8;i++){
SCL=0;
SDO = data&0x01;
SCL=1;
data = data >> 1;
}
}
void LedPrint(char *str)
{
char data;
char i=0;
// command 2
STB=0;
sout(0x40); // write mode, auto inc address
STB=1;
// command 3
STB=0;
sout(0xC0); // set write start address=0
sout(str[0]); // 1st digit
sout(0x00); // 1 digit occupy 2 bytes
sout(str[1]); // 2nd digit
sout(0x00);
sout(str[2]); // 3rd digit
sout(0x00);
STB=1;
}
// Read
STB=0;
sout(0x42); // read mode, auto inc address
data[0]=sin(); // read in 1st scan line only 0-5 useable
data[1]=sin(); // 2nd
data[2]=sin(); // 3rd
data[3]=sin(); // 4th
data[4]=sin(); // 5th
STB=1;
char sin(void)
{
char i;
char rc=0;
for(i=0;i<8;i++){
SCL=0;
rc = rc>>1;
SCL=1;
if(SDI)
rc |= 0x80;
}
return rc;
}
犯罪手法的專業化與攻擊走向複雜,使得企業使用愈來愈長的密碼,或是經常變更密碼。但Gartner研究副總裁Jay Heiser指出,「這是不智的,因為使用者反而被搞到忘記密碼或乾脆把它寫下來,進而為安全帶來各種威脅。」真是說得很對呀。
bit RcvStartBit;
bit RcvOk;
char sampleCount;
char biti;
char RcvByte;
#define TMR0PRELOAD (201)
unsigned int err=0;
void interrupt inthandler(void)
{
if(TMR0IF){
TMR0IF=0;
TMR0=TMR0PRELOAD;
if(!RcvStartBit){
if(!RC1){
sampleCount=5;
RcvStartBit=1;
biti=0;
RcvByte=0;
}
}else if(sampleCount>0){ // StartBit received
sampleCount--;
}else{
sampleCount=3;
if(biti<8){>>= 1;
if(RC1)
RcvByte |= 0x80;
biti++;
}else{
if(RC1){
RcvOk=1;
}else{
err++;
}
RcvStartBit=0;
}
}
}
}
#include <pic.h>
bit RcvStart;
bit RcvOk;
char biti;
char RcvData;
char RxData;
char RcvErr=0; // for debug
#define TMR0PRELOAD_START (255-30)
#define TMR0PRELOAD_BIT (255-131)
void interrupt inthandler(void)
{
if(TMR0IF) {
TMR0IF=0;
if(!RcvStart){
if(!RC1) {
TMR0=TMR0PRELOAD_BIT;
RcvStart=1;
biti=0;
RcvData=0;
}else{
TMR0=TMR0PRELOAD_START;
}
}else{
if(biti<8){ tmr0="TMR0PRELOAD_BIT;">>= 1;
if(RC1)
RcvData |= 0x80;
biti++;
}else{
TMR0=TMR0PRELOAD_START;
if(RC1){
RxData=RcvData;
RcvOk=1;
}else{
RcvErr++;
}
RcvStart=0;
}
}
}
}
char data[20];
void main(void)
{
char ri;
OPTION=0x02; // prescale use 8
TMR0=TMR0PRELOAD_START;
TRISC=0x0F;
TMR0IE=1;
GIE=1;
ri=0;
while(1) {
if(RcvOk){
RcvOk=0;
data[ri]=RxData;
ri++;
if(ri>=20)
ri=0;
}
}
}
// Software UART, half-duplex
// call RcvStart to start the Rx session. (and stop the Tx session)
// call RcvStop befor sending Data out.
#include
#define TXPIN RC0 // remember to modify the TRISC config
#define RXPIN RC1
#define TMR0PRELOAD_START (255-16) // 4800 : 30 9600: 16
#define TMR0PRELOAD_BIT (255-63) // 4800 : 130 9600: 63
bit TxProcess=0; // Tx In Process
bit RxProcess=0; // Rx In Process
bit RxStart=0; // Receive a Start bit
bit RxError=0; // Receive a Error condition
char TRBiti; // bit index, used in rx/tx bit
bit RxOk; // receive 1 char in TRData
char TRData; // sending, receiving data
char RxData; // receiving data : shift register - workspace
// INTERRUPT
//==================
void interrupt inthandler(void)
{
if(TMR0IF) {
TMR0IF=0;
if(TxProcess){ // Process TX
TMR0=TMR0PRELOAD_BIT;
if(TRBiti==10){ // start bit
TXPIN=0;
}else if(TRBiti==1){ // stop bit
TXPIN=1;
}else if(TRBiti==0){ // all complete
TMR0IE=0;
TxProcess=0;
}else{
if(TRData&0x01){
TXPIN=1;
}else{
TXPIN=0;
}
TRData = TRData>>1;
}
TRBiti--;
}else if(RxProcess){ // Process RX
if(!RxStart){
if(!RXPIN){
TMR0=TMR0PRELOAD_BIT;
RxStart=1;
TRBiti=0;
RxData=0;
}else{
TMR0=TMR0PRELOAD_START;
}
}else{
if(TRBiti<8){
TMR0=TMR0PRELOAD_BIT;
RxData = RxData >> 1;
if(RXPIN)
RxData = RxData | 0x80;
TRBiti++;
}else{
TMR0=TMR0PRELOAD_START;
if(RXPIN){
TRData = RxData;
RxOk=1;
}else{
RxError=1;
}
RxStart=0;
}
}
}else{
TMR0IE=0;
}
}
}
// Sending
//=========================
void SendChar(char data)
{
while(TxProcess);
TxProcess=1;
TRBiti=10;
TRData=data;
TMR0=TMR0PRELOAD_BIT;
TMR0IE=1;
}
void SendCString(const char *str)
{
char data;
char i;
i=0;
data=str[i];
while(data!=0){
SendChar(data);
i++;
data=str[i];
}
}
//==============================================
void RcvStart(void)
{
while(TxProcess); // wait Tx Complete
TMR0IE=0;
RxProcess=1;
TRBiti=0;
RxStart=0;
RxOk=0;
RxError=0;
TMR0=TMR0PRELOAD_START;
TMR0IE=1;
}
void RcvStop(void)
{
TMR0IE=0;
RxProcess=0;
}
//==============================================
char rcvstr[40];
char rcvlen=0;
void main(void)
{
int i;
OPTION=0x02; // prescale 8
TRISC=0x02;
GIE=1;
SendCString("Hello!\r\n");
RcvStart();
for(i=0;i<sizeof(rcvstr);i++){
while(!RxOk);
rcvstr[i]=TRData;
RxOk=0;
}
RcvStop();
SendCString("Receiveing OK\r\n");
while(1); // end
}
#include <pic.h>
unsigned char tick;
unsigned char sec;
void interrupt timer2(void)
{
if(TMR2IF){
TMR2IF=0;
tick++;
if(tick>=125){
tick=0;
sec++;
}
}
}
void main(void)
{
T2CON = 0x4A; // post 10, pre 16
PR2 = 250; // 16 x 250 = 40000
// 20M inst = 20/4 = 5M
// count 125 = 1sec
tick=0;
sec=0;
TMR2IE = 1;
PEIE = 1; // the int hirachy, TMR2 belongs to Periperial
GIE = 1; // Global
TMR2ON=1;
TRISB=0x1F;
while(1) {
if(sec%2){
PORTB = 0x00;
}else{
PORTB = 0xE0;
}
}
}
$GPRMC,053322.682,A,2502.6538,N,12121.4838,E,0.00,315.00,080905,,,A*6F這一個command是GPS Recommanded GNSS data
是UTC Time : 格式是hhmmss.sss所以是5:33:22.682A
代表data是valid (如果找不到衛星,就會是V)2502.6538
是緯度,格式是degree * 100 + minutes。但是minutes是100進位,所以要/100 * 60轉為degree,轉換後就是25'02'39.228''.N
是代表緯度是北緯12121.4838
是經度,格式是degree * 100 + minutes。minutes一樣要做/100*60的轉換,轉換後就是121'21'29.02''.E
代表經度是東經0.00
是速度,因為GPS天線沒動,所以是0.00315.00
是方向080905
是目前的日期,格式是ddmmyy,所以是05年9月8日- -
接著有兩個欄位沒有用,所以空著A
是Autonomous ?*6F
是checksum*** 所以用google earth就知道我把天線放在哪了****
data++; // skip the heading '$' mark
sum = *data;
while(*data!='*') {
sum ^= *data;
data++;
}
友邁科技
地址:220 台北縣板橋市文化路一段266號4樓之2
電話:02-8969 0032
傳真:02-8969 0030
mail:vincent@olemap.com
QUMAX
陳時康 Danny Chen
02 26982566 ext 323
0920843153
danny.chen@qumax.com.tw
YAMAHA http://www.yamahakhs.com代理
課長 林海立 Haili Lin
02-25118688 ext 282
haily@yamahasemi.com.tw
QUMAX http://www.qumax.com.tw
陳 明慧 Cathy Chen
02 26982566 ext 325
0921128018
cathy.chen@qumax.com.tw
#include <pic.h>
unsigned int tick;
unsigned int sec;
void main(void)
{
T2CON = 0x4A; // post 10. pre 16
PR2 = 250; // 16 x 10 x 250 = 40000.
// use 4MHz, inst Freq = 4/4 = 1MHz
// so count 25 times = 1sec
tick=sec=0;
TMR2ON = 1;
while(1) {
while(!TMR2IF);
TMR2IF = 0;
tick++;
if(tick>=25){
tick=0;
sec++;
}
}
}
《藍海策略》作者金偉燦與莫伯尼打破了「競爭力」大師波特 (Michael Porter)所提出的競爭為思考主軸的理論,《藍海策略》認為過度強調降低成本、改善效率,只在原有的市場進行差異化較勁,終究會落入企業削價競爭的「紅色海洋」。
《藍海策略》強調,唯有不甩競爭者,才能超越現有的需求,擺脫既有的競爭局面,為顧客創造有價值的創新。
「不要老是去抄襲別人的,要從客戶角度來創新,」全球最大智慧型電話(smartphone)廠商宏達電子總經理周永明強調,宏達在設計下一世代產品時,都是先考量滿足客戶未來需求,不會人云亦云、盲從潮流,才會創造出全球第一支pda(數位個人助理)手機。
一九九二年,眼看台灣勞力成本居高不下,帛漢電子董事長林昌亮帶著五百萬元大膽西進,前往廣東開平,生產電子變壓器、濾波器。大陸便宜的勞工,讓帛漢快速擴張,資本額成長八十倍,員工四千人。
林 昌亮自嘲在大陸經營的是「手工業」,他在大陸女工中,百中選一,因為她們必須分辨出頭髮般的細線,還有針頭大小的捲線器,然後在捲線器上,一線一線繞出電 子線圈,再加工製成各種成品,林昌亮說,帛漢就是這樣在針頭上討生活,一針一線繞出帛漢的商機。為了管理這群員工,林昌亮更花了十三年苦心,才建立出一套 軍事化的工廠管理與生產模式。
但大陸耕耘成功,林昌亮反而開始憂心,「靠大陸廠的低成本優勢,可以再過十年,但十年裡若不做升級,未來什麼都沒有!」於是,他決定押下在大陸掙來的一切所得,逆向回台灣找出路。