google-site-verification: google3bd66dd162ef54c7.html

syntax highlighter のテスト

 こっそりとプログラムのソースコード表示プログラム、syntax highliter のテストをやっています。

 本番の画面でないと細かい部分の確認が出来ないので過去の日付(7月10日)で投稿しています。

 この記事は最終的には消そうと思っていたのですが、このまま残して修正箇所の記録などに使おうかと思います。これ、完全に公私混同なんですが、お許し下さい。(#^.^#)

 以下は最近書いたプログラムをsyntax highlighterで表示したものです。単語の属性を判定して表示の色などを変えているのだと思いますが、すごく読み易くなります。

Cのソース
/*
DelaySleep関数のテスト
 2014/07/06 ラジオペンチ
 http://radiopench.blog96.fc2.com/
 */

#include <avr/sleep.h>

int led = 13;                          // LEDピン
boolean flag = false;                  // LED on/off フラグ

void setup() {                
  pinMode(led, OUTPUT);     
}

void loop() {
  digitalWrite(led, flag);              // flagで LEDを点滅
  delaySleep(500);                      // delaySleep関数呼び出し
  flag = ! flag;                        // flagを反転
}

void delaySleep(unsigned long t) {
  //
  // 注意:millis関数を使っているので50日以上の連続動作は出来ない。
  //
  unsigned long t0;
  if( t <= 16 ) {                       // 16ms以下なら普通のdelayで処理
    delay(t);
  }
  else{                                 // 17ms以上ならスリープ入れたdelayで実行
    t0 = millis();                      // 開始時のmillisの値を記録しておき
    set_sleep_mode (SLEEP_MODE_IDLE);   // アイドルのモード指定
    while( millis() - t0 < t ) {        // 設定値になるまでループ
      sleep_mode();                     // スリープに入れる(自動復帰するので何度も指定)
    }
  }
}
↑最後の行が上半分しか表示されない。 shCoreDefault.css修正で直った(下に2em追加)

シェルスクリプト
#!/bin/bash
echo 'xivelyアップロードプログラム(xi27.py)の動作監視を開始します'

while true                                      # 無限ループで
do
kazu=$(ps -ef | grep "python xi27.py" | wc -l)  # 実行中のプロセスの数をwcで数える
kazu=$(( $kazu - 1 ))                           # grep自体がカウントされているので一つ減らす
#echo $kazu >> nohup.out                         # 動作確認用にkazuを出力
if [ $kazu == 0 ] ; then                        # プロセスが無かったら
echo '' >> nohup.out                            # ログを改行
echo 'Restart xi27.py' >> nohup.out
nohup python xi27.py&                           # 起動する
fi
sleep 300                                       # 5分待ってループ
done
Pythonのソース
# -*- coding: UTF-8 -*-
#!/usr/bin/env python

#
# 太陽電池の発電量と電圧をzivelyにアップロード
# 2014/6/21 ラジオペンチ
# http://radiopench.blog96.fc2.com/
# xi27.py

import xively
import subprocess
import time
import datetime
import requests
import serial
 
# set feed_id and api_key
FEED_ID = "************"
API_KEY = "***********************"
DEBUG = "DEBUG"
 
# api client 初期化
api = xively.XivelyAPIClient(API_KEY)
feed = api.feeds.get(FEED_ID)

# 電力 power
def get_datastream_watt(feed):
  try:
    datastream_watt = feed.datastreams.get("power")
    if DEBUG:
      print "Found power"
    return datastream_watt
  except:
    if DEBUG:
      print "Creating new datastream"
    datastream = feed.datastreams.create("power", tags="max30W")
    return datastream

# 本日の累積発電量 wh_today
def get_datastream_wh_today(feed):
  try:
    datastream_wh_today = feed.datastreams.get("wh_today")
    if DEBUG:
      print "Found wh_today"
    return datastream_wh_today
  except:
    if DEBUG:
      print "Creating new datastream"
    datastream = feed.datastreams.create("wh_today")
    return datastream

#
#   メインルーチン
# 
def run():
  print "Start GTI data transfer to xively"
  con=serial.Serial('/dev/ttyUSB0', 9600)          # USBシリアルポートを接続 
  print con.portstr                                # ポートの情報を出力
  str=con.readline()                               # ゴミが入っているのを捨てる

  feed = api.feeds.get(FEED_ID)
  datastream_watt = get_datastream_watt(feed)
  datastream_volt = get_datastream_volt(feed)
  datastream_wh_today = get_datastream_wh_today(feed)

  counter = 0 
  while True:                                      # 無限ループで
    str = con.readline()                           # USBから一行読んで
    n = str.count(",")                             # デリミッタの数が
    if n== 5:                                      # 5個なら該当データーとみなし
       counter += 1
       if counter == 5:                            # 5回目なら
          xx = str.split(',', 6)[2]                # 電圧取り出し
          volt = int(xx)/10.0                      # 電圧
          datastream_volt.current_value = volt     # 電圧を記録
          datastream_volt.at = datetime.datetime.utcnow()
          try:
              datastream_volt.update()
          except requests.HTTPError as e:
              print "HTTPError({0}): {1}".format(e.errno, e.strerror)

       elif counter == 10:  
          xx = int(str.split(',', 6)[4])           # 発電量のデータを取り出し
          xx = (xx + 50) / 100                     # 有効桁数を調整
          watt = xx/100.0                          # スケーリング
          datastream_watt.current_value = watt     # 電力を記録
          datastream_watt.at = datetime.datetime.utcnow()
          try:
              datastream_watt.update()
          except requests.HTTPError as e:
              print "HTTPError({0}): {1}".format(e.errno, e.strerror)

       elif counter == 15:
          xx = str.split(',', 6)[5]                # 本日の発電量のデータを取り出し
          wh_today = int(xx)/100.0                 # スケーリング
          datastream_wh_today.current_value = wh_today       # 本日累積電力を記録
          datastream_wh_today.at = datetime.datetime.utcnow()
          try:
              datastream_wh_today.update()
          except requests.HTTPError as e:
              print "HTTPError({0}): {1}".format(e.errno, e.strerror)

          counter = 0
          print volt, watt, wh_today, datetime.datetime.utcnow()

run()

関連記事

コメントの投稿

管理者にだけ表示を許可する

カレンダー
06 | 2017/07 | 08
- - - - - - 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 31 - - - - -
プロフィール

ラジオペンチ

Author:ラジオペンチ
電子工作を中心としたブログです。たまに近所(東京都稲城市)の話題など。60過ぎて視力や器用さの衰えを感じつつ日々挑戦!
コメントを入れる時にメールアドレスの記入は不要です。なお、非公開コメントは受け付けていません。

記事が気に入ったらクリックを!
最新記事
カテゴリ
最新コメント
リンク
FC2カウンター
検索フォーム
月別アーカイブ
RSSリンクの表示
QRコード
QRコード