忍者ブログ

EDA Blog

Verilog、SystemVerilog、SystemCなど、ハードウェア記述言語についてのブログです。

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

Perlを使ってGoogle翻訳

Webの翻訳APIをPerlからアクセスする方法を探していたら、Google AJAX Language APIをPerlから叩いて翻訳するを見つけました。 サンプルコードを参考にして、翻訳したい文章をGoogle翻訳で翻訳できるようになりました。
作者のmemememomoさんには大感謝です。

JSONを使うのは初めてだったのですが、使いやすそうです。


拍手[1回]

PR

モダンPerl入門

モダンPerl入門を買ってきました。
XS言語の部分に特に興味があります。
少しずつ読んでいこうと思います。

拍手[0回]

Tektronix TDS3064BをPerlで制御する

別のブログに書いておいた記事です。
昔作成した、Perlを使ってTektronix社製のオシロスコープTDS3064Bを制御できます。
変数$commandが、オシロスコープに送るコマンドです。



use Socket;
use HTML::TokeParser; # TDS3064Bからの応答を解析するのに必要

# ソケットの作成
my $hostname = '192.168.0.4'; # TDS3064BのIPアドレス
my $port = getservbyname('http', 'tcp');
my $iaddr = inet_aton($hostname)
or die("Cannot convert hostname to IP address.");
my $sock_addr = pack_sockaddr_in($port, $iaddr);
socket(SOCKET, PF_INET, SOCK_STREAM, 0) or die("Cannot creat socket.");
connect(SOCKET, $sock_addr) or die("Cannot connect to $hostname.");
select(SOCKET); $| = 1; select (STDOUT);

# コマンドの作成
# $commandは、測定のソースをチャネル0に設定するコマンド
my $command = "measurement:immed:source ch0";
my $cmd = "COMMAND=$commandrn";
$cmd .= "gpibsend=Sendrnname=rn";

# TDS3064B内のCGIを使う
print SOCKET "POST /Comm.html HTTP/1.1rn";
print SOCKET "Host: $hostnamern";
print SOCKET "Referer: http://$hostname/Comm.htmlrn";
print SOCKET "Content-Type: text/plainrn";
print SOCKET "Content-Length: ", length($cmd), "rn";
print SOCKET "rn";
print SOCKET $cmd;
print SOCKET "rn";

# TDS3064Bからの応答を$respに連結していく
my $resp;
while () {
next unless /^/;
$resp .= $_;
}
close (SOCKET);

# ほしい情報は、TDS3064Bからの応答のtextareaタグに入っている。
# HTML::TokeParserでその内容だけ抜き出す。
my $p = HTML::TokeParser->new($resp) or die("HTML::TokeParser failed.");
my $tag = $p->get_tag('textarea');

# 応答は、$p->get_text()として見ることができる

拍手[1回]

カレンダー

03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

フリーエリア

最新CM

[04/11 なつたん]

最新TB

プロフィール

HN:
aston_martin
性別:
非公開

ブログ内検索

カウンター

アクセス解析