4

C#とPerlでファイルアップローダ

POSTによりデータを送受信する: .NET Tips: C#, VB.NET, Visual Studioの「”multipart/form-data”でデータを送信する」の「HttpWebRequestとHttpWebResponseを使った方法」を参考にして、C#でアップロードクライアントを作った。

あと、それを受け取るためのPerl書いた。

俺が作ったC#の方はこっち→SourceCode(VS2005 C#2.0)

サーバー側のPerl。ファイルを受け取った後、元のファイル名にリネームする。これだと受信中に別のPOSTが来たらマズイはず。

CGI::Carpはエラー表示用なので無くても良い

ディレクトリのパーミッションはとりあえず777

#!/usr/bin/perl

usestrict;

usewarnings;

useutf8;

useCGI;

useCGI::Carpqw(fatalsToBrowser);

my$cgi=newCGI;

print$cgi->header(-type=>”text/plain”,

-charset=>”UTF-8″);

my$filename=$cgi->param(‘upfile’);

my$buf;

open(OUTFILE,”>tmpFile”)||die”Can’topenSaveFile!!orz”;

binmode(OUTFILE);

while(read($filename,$buf,1024)){

printOUTFILE$buf;

#print$buf;

}

close(OUTFILE);

rename”tmpFile”,$filename;

print”$filenameuploaded”;

0

Dontronics uLCD128に棒グラフを表示

ATmega168のADC0にCdS(明るさのセンサ)を接続し、AD値を取る。そのAD値をグラフとテキストにしてLCDに描画した。

小型LCD→Dontronics :: 4d-Micro-LCD Old

SourceCode, hex, Makefile(avr-gcc 3.4.6)

ここまでに作った関数だけで全部できた。

Read more

0

Dontronics uLCD128に文字列を表示する

引き続き。ドントロニクスの小型LCDをいじってます。

文字列を表示する関数 lcd_sendStr()、文字1つを表示する関数 lcd_sendTextを作りました

■文字列関数

/*文字を表示する*/

voidlcd_sendText(chart,charcolumn,charrow,char*sb){

loop_until_bit_is_set(UCSR0A,UDRE0);//送信データレジスタ空きまで待機

UDR0=’T’;

loop_until_bit_is_set(UCSR0A,UDRE0);

UDR0=t;

loop_until_bit_is_set(UCSR0A,UDRE0);

UDR0=column;

loop_until_bit_is_set(UCSR0A,UDRE0);

UDR0=row;

loop_until_bit_is_set(UCSR0A,UDRE0);

UDR0=sb[0];

loop_until_bit_is_set(UCSR0A,UDRE0);

UDR0=sb[1];

}

/*文字列を表示する*/

voidlcd_sendStr(char*str,charcolumn,charrow,char*sb){

while(*str!=NULL){

lcd_sendText(*str,column,row,sb);//1文字表示

*str++;//1文字進む

column++;//表示位置ずらす

lcd_waitRes();

}

}

Read more

0

Dontronics uLCD128をマイコンから操作、RGB3色で順に塗りつぶす

動いた。ATmega168からUARTでコマンドを送って、動かす。

SourceCode, hex, Makefile(avr-gcc 3.4.6)

データシートにはマイコンが5Vの場合、マイコンのTXDとLCDの間に1kΩの抵抗を入れろと書いてあったが、なぜかVCCとの間に入れてプルアップにしたら小気味よく動いた。RXDはそのまま。Dontronics uLCD128

■カラーコードの変換関数

前のs.h.log: Dontronics uLCD128のカラーコード変換もちょっと間違いがあったので直した

voidcolorToSb(char*color,char*sb){

//msb

sb[0]=((color[0]&0b11111)< <3)//RED

+((color[1]&0b111000)>>3);//GREEN-A

//lsb

sb[1]=((color[1]&0b111)< <5)//GREEN-B

+(color[2]&0b11111);//BLUE;

}

Read more

0

トランジスタでUARTを分岐させる

普段使う20ピンや28ピンのAVRには、UARTピンが1組しかない。64ピンとかになれば2組とか付いているけど。

んで昨日からDontronicsのUARTかUSBで制御できる小型LCDをいじっているんだけど、いつもシリアル通信でデバッグしているのに、UARTがLCDに占有されているせいでデバッグができない。

仕方ないので、信号用のトランジスタ2SC1815と10kΩの抵抗を使って、UARTセレクタ(分岐させる回路)を作った。

usart selectorusart selector

Read more