ラズパイでkumanのLCDタッチパネルモニタ3.5インチを使う

買ったけどモニタ、要らなかったかな・・・というのが本音です。

Amazonでタッチパネルモニタ+ケース+ヒートシンクセットを買いました。

2017年12月20日現在のセットアップ方法

【注意点】

  1. RaspbianはNOOBSではなくイメージのほうで入れないと相性が合わないので注意
  2. ケースの上の蓋を閉じるとモニタを付けられないから、蓋は付けない

【セットアップ】

  1. イメージで入れて、一通り設定をしたらシャットダウン
  2. HDMIケーブルでモニタにつないだまま、タッチパネルモニタをセッティングしてから電源ON
  3. 次のコードを実行
    git clone https://github.com/goodtft/LCD-show.git
    chmod -R 755 LCD-show
    cd LCD-show/
    sudo ./LCD35-show
  4. HDMIを取り、再起動したときにはタッチパネルモニタに映っています

【HDMIに戻したくなったら】

次のコマンドを打てばHDMIで使用できるようになります。

cd LCD-show
./LCD-hdmi

 

その逆に

cd LCD-show/
sudo ./LCD35-show

でタッチパネルモニタに戻ります。

実際使ってみて

画面小さい!最終的には電子工作でIoTをしたいので当分使わないかも。

ケースはいい感じだけど、蓋の取り外しをしていたらバキッと結合部分が割れちゃいました・・・

それでも何もカバーがないよりはカバーがある安心感と行ったらすごいです!

ヒートシンクもいいですね。コレって結構大事かもです。
3個入っているので表に2個、裏に1個です。

 

まだまだ前途多難・・・

windows10にネットワークがつながらない

突然windows10のパソコンにネットワークがつながらない

とか

windowsパソコンの共有に入れない

時の設定方法備忘録

 

速攻に直す共有フォルダを持っているパソコンの設定

  1. どこか適当なフォルダを右クリックしてプロパティを出す。
  2. 「共有」タブの下の方の「ネットワークと共有センター」を押す。
  3. 「共有の詳細設定」画面で下の方の
    「すべてのネットワーク」
    「パスワード保護共有」
    ◎パスワード保護共有を無効にする
    にチェック

 

だいたいこれでなんとかなる。

変に「共有」にeveryoneの設定の方をするとすごく時間がかかる。
もし、これで治らなかったらeveryone設定をする

 

windowsが急につながらなくなる原因

原因はWindows Updateです。もしくはウィルス対策ソフト。
パソコン側の忖度だから、許してあげましょう。

ラズベリーパイしようとして外付けHDDを消してしまった

ラズパイのセットアップ注意!

外付けHDDは必ず抜いてからセットアップしましょう![icon name=”frown-o” class=”” unprefixed_class=””]!!!!!

 

Win32 Disk Imagerで外付けHDDにimage(img)を入れてしまった

そろそろ育児も終わり落ち着くころなので、
かねてから興味があったラズパイでIoTにチャレンジをしようと。

「Win32 Disk Imager」を使用してSDカードにraspbianを入れようとしたところ

デバイスの場所を間違えて外付けハードディスクにOSを書き込んでしまいました。

 

Windows10のエクスプローラーで読み込もうにも
「フォーマットしますか?」しか出ないし
やばいのでググってみたら同じことした人がいて
とりあえず安心^^

[Win32 Disk Imagerで誤って削除]
http://qa.itmedia.co.jp/qa9264223.html

 

[外付けHDDの復元 Win32DiskImagerでras・・・]
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11137836511

 

でも、中を見ると全く安心できない内容…

ダメなのかぁ…

今度、WinXP用の「ファイナルデータ」を持っているのでそれで試してみようと思っています…

 

でも、実際HDDの中身は予備のバックアップデータと、一時作業用のものばっかりだったから…
どうせ納品先の会社に全データを納品してあるし…

まぁ…あきらめつくけど…(-_-;)

そうじゃない人は本当に…気の毒…

 

ファイナルデータを使った結果

ファイナルデータ2.0しかなかったので、これでディスクをチェック。

ダメでした。

なんか逆にすごいな!Win32 Disk Imager!

HDDを使えるようにフォーマット:備忘録

中身はあきらめましたので、またデータを入れなおそうかと…
すると1TのHDDなのに50Mしかない!?

HDDの容量が すごく少なくなっている!

えぇぇぇ!っと思ったので、再フォーマット方法の備忘録

  1. コントロールパネル→管理ツール→コンピュータの管理
  2. 「記憶域」「ディスクの管理」で問題のHDDを見ると50Mあって、横に400G、900Gがありました
  3. この3つすべてをマウス右クリックで「ボリュームの削除」して1つにまとめます
  4. 「未割り当て」になっているので、マウス右クリックで「新しいシンプルボリューム」で、あとは「次へ」「次へ」…

これで使えるよ…( ;∀;)

不幸中の幸い。

 

ちょうど年末だから…PC内のデータをバックアップしとこぅ…(=_=;)

 

 

 

 

 

 

 

 

 

学校給食はまずくてもいいと思う

「学校給食がマズイ」って話題になっているけど
素朴な味付けでもいいと思う。
学校の真の目的でもある「社会性を教える」というのと同じで
「正しい味覚」を教えるって感じで妥協してほしい。

正しい味覚にもそぐわないマズさだったら論外だけど!

正しい味のものを食べさせるってことは大事だと思う。
でも、最初の量は少なめで。好き嫌いがあるからねぇ…
みんな試食くらいの少ない量を食べて、あといっぱい食べたい人は、おかわりすればいいんじゃね?って思う…

・主食…米、パン、麺
・主菜…味の濃くて主食が進むもの
・副菜…正しい味で少量
・デザート…果物とかヨーグルト

みたいな感じで…

 

「正しい味」って必要か?って思うけど・・・
正しい味を知っていると食生活が楽しくなるし、
大人になったときに高級店とかにいたっ時に恥ずかしい思いをしないで済むw
自炊できれば食費も抑えられるし、健康的。
メリットは、あんまりわかんないけど…やっぱり正しい味覚って大事なんじゃないかと思う。

 

最近のネットのレシピとか見ると、味覚がおかしいんじゃないか?って思うようなものが多くてびっくりです。

どうやってもカップ麺の汁に卵を入れてチンして茶碗蒸しにならないよ。
あのツゥルンとしたなめらかで優しい味が茶碗蒸しじゃないの?

パンにプリン乗せて焼いても…やっぱりプリン乗せ焼きパンだし…

無理してHMを使わなくてもいいと思うし

スナック菓子をお湯で溶いてもやっぱりスナック菓子の味だし…

 

レシピサイトを見ていても
ほうれん草の下茹でとかしなかったり、
下ごしらえしないし、
「ナメコは生でも食べられます」とか書いてあったり…

なんともまぁ…ヤバいね。

 

市販のものも、
どうして「炭火焼風のタレ」って、どうしてあんなにアンモニア臭くなるんだろう…
レトルトってすべて共通して独特のにおいがあるし
カップ麺なんて、ほとんど同じ味で、しかも何食ったか判らない…

 

飯はできるだけ作るようにしている。
シンプルに魚を焼いただけでも美味しいし、それこそが正しい味だと思ってます。
あとは野菜も結構食べるようにしてるし、
変に味付けするよりも、そのままの方がうまかったりするしw

 

 

 

 

iPhone8を買う理由

【このページは時短ページ】要点は緑色の太文字だけ読めばわかると思います

とっても不人気なiPhone8シリーズ。
買っちゃったよ…その理由と検証を説明します

いきなり結論:
iPhone7以前の機種なら買い替えるべし!
7を持っていたら不要!

 

 

 

 

iPhone7からの買い替えなら不要と感じた

今使っているのがiPhone6sでした。
なので防水機能・防塵機能が全くない裸武者のような機種だったので防水・防塵機能は魅力的です。

実際7は防水というよりも防滴と考えた方が安全な状況。

iPhone8は強めの防水・防塵機能であるとともに強度が強いので6からだったら絶対に買い!

 

 

機械の寿命や破損に備える

買い取りサービスの適用外や故障修理の対象に備えて2世代交代を目安に

パソコンもだけど壊れる前に買い替えるのが理想です。
2年も使うと、そろそろどこかが悪くなるというのもあるし、3世代くらい前になると機種編の買い取りサービスの適用外にもなってしまうので、せめて2世代開けての交代くらいの方が安心です。
それにソフトウェアの面や動作の面でもやっぱり新しいものの方が正常動作が確立されています。

常に新しい挙動をするスマホはある程度したら買い替えておくと安心です。

 

 

契約プランがちょっと安くなる

こればっかりはお店に行って説明を受けないと人それぞれです。
ウチは2人家族+光でソフトバンクなので支払いが若干安くなる予定?本当か?…なるはず?
まぁ、うっかり変な有料サービスに入っていたというのもあったのでそのあたりも切っていますが。
「機種代金」は今月でチャラになるのですが…よくわかりません。
「機種変先取り」って何?意味わかんなすぎて腹立つ!
「半額サポートfor iPhone」はとりあえず2年後に強制機種回収契約?みたいな

その明細はまた後日請求が来たらUPします

iPhone6s現在   iPhone8の場合の予定  
機種代金 4,440円 半額サポートfor iPhone

560円

基本料
ホワイトプラン
934円 基本料
スマ放題ライト
1,700円
通信料
パケットし放題フラット
for4G LTE 7G
5,700円 通信料
ウルトラギガモンスター
50G
7,000円
おうち割光セット -1,410円 家族2人割り -1,500円
ウェブ使用料 300円  
安心保障パックプラス 650円  

機種変先取りプログラム

300円  

ユニバーサル使用料

3円  
月付き割 -2,625円  
タダで機種変キャンペーン -1,065円  
       
       
合計 7,227円  

 

 

実際にiPhone8の売り文句はどうなのか?

はっきり言うと無駄な気がします。

  • スピーカー…従来より大きな音は出るけど、音割れするので無駄
  • ワイヤレス充電…充電しながら使えないのでいらない。充電スタンドを買わないといけないからいらない。
  • ApplePay…交通ICカードがすべて適用されたら使おうと思うけど、現時点で必要ないし対応しているお店も少ないし、セキュリティとか怖いし電車内スキミングとかも怖いから、まだ使わない。
  • カメラ性能…優れた性能を持っているのはiPhoneXのほうで8は大したことない。でも、一眼じゃないデジカメよりはきれいに撮れる。
  • スピード…そんなに変わらない
  • イヤホン穴…ないと不便だけど慣れると思う

 

 

キリのいい上限値を出す計算式(キリ番計算式)

グラフを書くときの上限値を出すときに例えば最大値が52.6とかだったら53というようなキリのいい数字で締めたらキレイですよね。

そういうときのキリの良い数字を求める計算方法です

C#でチャートコントロールを使うなら
こんな感じで設定

//Y軸最小値、最大値、目盛間隔の設定
chart1.ChartAreas[0].AxisX.Maximum = MAXVALUE_X ;
chart1.ChartAreas[0].AxisY.Maximum = MAXVALUE _Y;

上位2桁でキリの良い上限値を求める方法

【例】

  • 52.6753→53.0000
  • 0.124→0.200
  • 15473→16000

C#で上2桁のキリ番を計算

double dblVal_In = 52.6753;//←暫定的な最大値

strVal = dblVal_In.ToString(“0.0E+0”);
intPos = strVal.IndexOf(“E”) + 1;
dblVal_new = double.Parse(strVal);
if (dblVal_new < dblVal_In)
{
dblVal_new = dblVal_new + Convert.ToDouble(“0.1” + *注Mid(strVal, intPos));
}

double MAXVALUE = dblVal_new;//←キリの良い数字

 

 

 

VB6(VBA)で上位2桁のキリ番を計算

strVal = 52.6753′暫定的な最大値

strVal = Format$(dblVal_In, “0.0E+##”)
intPos = InStr(1, strVal, “E”)
dblVal_new = CDbl(strVal)
If dblVal_new < dblVal_In Then
dblVal_new = dblVal_new + CDbl(“0.1” & mID$(strVal, intPos))
End If

MAXVALUE = dblVal_new;//←キリの良い数字

 

 

上位1桁でキリの良い上限値を求める方法

【例】

  • 52.6753→60.0000
  • 0.124→1.000
  • 15473→20000

C#で上1桁のキリ番を計算

double dblVal_In = 52.6753;//←暫定的な最大値

strVal = dblVal_In.ToString(“0.E+0”);
intPos = strVal.IndexOf(“E”)+1;
dblVal_new = double.Parse(strVal);
if (dblVal_new < dblVal_In)
{
dblVal_new = dblVal_new + Convert.ToDouble(“1” + *注Mid(strVal, intPos));
}
double MAXVALUE = dblVal_new;//←キリの良い数字

 

VB6(VBA)で上位1桁のキリ番を計算

strVal = 52.6753′暫定的な最大値

strVal = Format$(dblVal_In, “0.E+##”)
intPos = InStr(1, strVal, “E”)
dblVal_new = CDbl(strVal)
If dblVal_new < dblVal_In Then
dblVal_new = dblVal_new + CDbl(“1” & mID$(strVal, intPos))
End If

MAXVALUE = dblVal_new;//←キリの良い数字

 

キリ番計算の考察

※注
C#の方では。ここでMidという関数を作って使っています。
詳細はコチラのサイトを参考にしてください→「VB の Left, Mid, Right のように文字列を取り出す


ここで使っている計算はイロイロな上限値でキリ番にできるようになっていますので、関数かしておくと便利です。
私が使ったときはイロイロな種類のグラフを書くので上限値が250だったり9.84だったりのキリ番を求めなきゃいけないときに使いました。

多分あっていると思う…

こういうのって納品した後に備忘録として書くからガッツリとデバッグしてないんだよね…(=_=;)
まちがってたらごめん。でもこんな感じで考えりとできますってことで参考に。

 

 

中古PCを買うメリットとデメリット

【このページは時短ページ】要点は緑色の太文字だけ読めばわかると思います

パソコンが壊れた!新しいパソコンを買うのに迷った!というときのアドバイス。

パソコンが壊れる前に買い替えること!

お客さまの90%が「パソコンが壊れたので新しいのを購入したいので…」と相談が来ます。

そして必ず「最近動きがおかしい感じで…」とか「音がうるさくなって…」「熱を持つようになって…」「起動しないときがあったり…」と壊れる前の話をします。

壊れる前に!そういう予兆が出たら買い替えてください!

パソコンが壊れると、壊れたパソコンのデータを完全に取り出すことができません!

壊れる前なら、新しいパソコンでも、前のとほぼ同じような環境にしてやることができます。使っているファイルとか、メール設定や今までのメール、デスクトップ、ソフト、お気に入り、写真、音楽などなど…

壊れると元のパソコンの中にあったものの50%くらいしか持ってこれないと思ってください。

 

 

 

パソコンを中古で買うメリット

パソコンを中古で買う理由はただ一つです。

「今使っているソフト(プログラム)・外部機器がこのバージョンでないと動かない」

の時だけです。それだけです。

特にWindows7は開発関係ではとても重宝されていて、
一世代前のVisualstudio(VB6、VB4あたり)が動くので、IT全盛期Windows98に開発をした社内システムを使うにはコレが適しています。
大体のWindowsXPで動いていたプログラムは、それなりの設定をすればWindows7で動かすことができます。
しかし、そのプログラムを動かすために最新のソフトExcelとかWordとかPhotoshopとか殆どが使えません。
すべての最新プログラムを投げうってでも旧システムを使うときにはWindows7を中古で買うのもアリです。

「好きだから」とか「気に入っているから」というならデメリットを理解してから考えてください。

 

 

 

中古パソコンを買うデメリット

デメリットは沢山ありますが簡潔に言うと

  1. 壊れやすい!
  2. 動かない!
  3. 割高!
  4. 危険!

私だったら絶対に買いませんね!知り合いだったら絶対買わせませんね!

1.壊れやすい点

機械の寿命があります。回転もののハードディスクは5年もヘビーに使っていたらソロソロお迎えが来るころでしょう。中古前の状況にもよりますが、あまり長持ちするパーツでもないので難しいです。だったらハードディスクだけ買い替えればいいじゃんと思いますが、古いマザーボードに適したハードディスクも、あまりなかったり中古だったりなので壊れの連鎖になります。

 

2.動かない点

・本体が動かない

確実に引っかかるのがWindowsUpdateです。
自動でUpdateをしない設定にしておかないと次に電源を入れたときに数千件の更新項目のためUpdateが始まって数日動かせないことにもなります。最悪の場合Updateもできません。

 

・ソフトが動かない

特にインターネット系です。2017年の現時点でWindowsVistaは、もうまともにサイトを見ることができません。
かろうじてサイトを見ることはできますが、レイアウトが崩れて見れないし、通販もできないし動画再生すら難しい状況です。

現在ホームページなどをしっかり見ることができる最終OSはWindows7です。それ以前は不可。

それ以外にも当然のことですが最新ソフトを入れても重い、動かないことは普通にあります。

でもWindows7は開発環境がいろいろ動くので神機!重いけど。
サイトを見ない、Updateをしないという条件の下で使用しています。
趣味や実用ではありませんね。確実に開発用オンリーです。

3.割高

今や最新機種も中古にちょっと+したくらいの金額で変えます。
また壊れるということを考えると
最新機種1台買うのと
中古3台かって、しかも毎回設定しなおして…
と考えると時間や金額も含めて最新の方がお得です。

4.危険(ウィルスや火事発火)

古いシステムやセキュリティなのでウィルスなんてバンバン入ります。
さらに、ラップトップを開けたところGが中で死んでたなんてことも。
それ以外にもホコリいっぱいとかで発火の危険も考えられそうです。

セキュリティも怖いし火事も怖いです。

 

 

 

それでも中古パソコンを買うなら?

ここで中古というと、ついWindows7あたりの話をしてしまっていました。
逆にWindows10の中古なら?と思うと、動作などは良いのですがハードディスクとか物理的な破損が心配ですね。
Windows8は?というとコレは使えません。闇歴史OSです。

 

 

 

新しいパソコンを買うときのチェック

安かろう悪かろう

チラシやDMを持ってきて「これ!安いからいいんじゃない?」と言われますが、大体低スペック。
よく書いてある部分の目安として
Celeron・・・使えない遅さ
Corei3・・・イライラする遅さ
Corei5・・・十分使える
Corei7・・・すげぇ快適
もっと細かくCPUの種類がありますが、この4つを参考にして比較してみるとよいと思います。

 

 

 

今、業務で動いているPCは何?

そういう自分は旧OSで何を使っているのかというと、中古で買うというよりも破棄するPCをもらうとか、買い替え前の古いのという感じで環境を保持しています。家にあるものや出先にあるものも含めています。

  • Windows98
    NECの古いやつ、Dynabook…主にVB2のプログラムやデータ焼き直し用で使用
  • WindowsVista
    Vaio・Corei5、Vaio・Celeron…使っていないですね。ネットがうまく動かないし…旧プログラムの動作確認用
  • Windows7
    DELL・Corei7、DELL・Corei5、ThinkPad・Corei5…現役バリバリ!VB4・VB6開発したものの修正や焼き直し参照、C#、Eclipce。もちろんVB4を入れるといろいろ動かなくなるのでその都度フォーマット。株・EX監視用。
  • Windows8
    DELL・Corei5…息子の株・FX監視と取引、レポート、PSOなど
  • Windows10
    DELL・Corei7…現在のメイン。株・FX監視と取引、VisualStudio C#、Xamalin

 

 

 

 

 

 

Chartコントロールでラベルやグラフの設定

VisualStudioのChartコントロール

あまり有名ではないけど、とても便利で簡単なのでC#での使い方を備忘録。
とりあえず自分がやったグラフだけ書きますが
細かい設定まで書いているので参考にしてください。

コントロールの貼り付け

「ツールボックス」「データ」の中にあるチャートをドラッグドロップ

 

チャートの初期化

//初期化
chart1.Series.Clear();

//X軸最小値、最大値、目盛間隔の設定
chart1.ChartAreas[0].AxisX.Minimum = 0;
chart1.ChartAreas[0].AxisX.Maximum = 20;
chart1.ChartAreas[0].AxisX.Interval = 5;

//Y軸最小値、最大値、目盛間隔の設定
chart1.ChartAreas[0].AxisY.Minimum = 0;
chart1.ChartAreas[0].AxisY.Maximum = 50;
chart1.ChartAreas[0].AxisY.Interval = 10;

//背景色
chart1.ChartAreas[0].BackColor = Color.FromArgb(255,200,200,200);

//中の罫線を点線にと色
chart1.ChartAreas[0].AxisX.MajorGrid.LineColor = Color.HotPink;
chart1.ChartAreas[0].AxisX.MajorGrid.LineDashStyle = ChartDashStyle.Dot;
chart1.ChartAreas[0].AxisY.MajorGrid.LineColor = Color.Brown;
chart1.ChartAreas[0].AxisY.MajorGrid.LineDashStyle = ChartDashStyle.Dot;

折れ線グラフの書き方

例:「全国」という名前の青くてちょっと太い線のy=5x+10なグラフ

Series series_all = new Series(“全国”);
{
for (int i = 0; i < 50; i++)
{
int x = i;
int y = (5 * x) + 10;

series_all.Points.AddXY(x, y);
}
series_all.ChartType = SeriesChartType.Line;//グラフの種類
series_all.Color = Color.Blue;//線の色
series_all.BorderWidth = 3;//線の幅
series_all.IsValueShownAsLabel = false;//ポイントごとの値を表示しない
}
chart1.Series.Add(series_all);

 

 

 

分布図の書き方

なんのグラフなんだか…(-_-;)

string[] ary_tdfk = { “北海道”, “青森”, “岩手”, “秋田”, “山形”, “福島” };
double[] ary_y ={ 20.5, 10, 12.8, 7, 25.2, 9 };
long[] ary_x={ 15, 8, 4, 10, 7, 5};

//分布図
Series series_spraying = new Series(“散布図”);
{
//描画形式の設定
series_spraying.MarkerSize = 10;//点の大きさ
series_spraying.MarkerStyle = System.Windows.Forms.DataVisualization.Charting.MarkerStyle.Diamond; //点の形
series_spraying.ChartType = SeriesChartType.Point;//グラフのスタイル
series_spraying.Font = new Font(“Arial”, 8);//文字フォントとサイズ
series_spraying.Name = “散布図”;

//描画
for (int i = 0; i < ary_tdfk.Length; i++)
{
DataPoint dp = new DataPoint(ary_x[i], ary_y[i]);
dp.Label = ary_tdfk[i];
series_spraying.Points.Add(dp);
}
}
chart1.Series.Add(series_spraying);

ラベルのカスタマイズ

chart1.Series[“散布図”].LabelBackColor = Color.LightYellow;//ラベルの背景色
chart1.Series[“散布図”].CustomProperties = “LabelStyle=BottomRight”;//ラベルの位置
chart1.Series[“散布図”].Color = Color.Aqua;//ポイントの色

 

 

ラベルが重なってもいい、または重ねない

上のラベルはラベルを重ねない状態です。

密集した場所だと→とか自動で出るので結構便利ですが逆に分かりにくい場合は重なってもいいからという場合は

chart1.Series[“散布図”].SmartLabelStyle.Enabled = false;//ラベルの自動移動

 

凡例の削除

ちょっと場所を取りすぎるので邪魔ですよね

//凡例の非表示
for (int i = 0; i < chart1.Series.Count; i++)
{
chart1.Series[i].IsVisibleInLegend = false;
chart1.Series[i].IsValueShownAsLabel = false;
}

 

チャートをクリックしたときに値を表示

private void chart1_Click(object sender, EventArgs e)
{
HitTestResult result;
result = this.chart1.HitTest(((MouseEventArgs)e).X, ((MouseEventArgs)e).Y);
if (result.ChartElementType == ChartElementType.DataPoint)
{
DataPoint dp = result.Series.Points[result.PointIndex];
label1.Text = “エリア:” + dp.Label + “ X=” + dp.XValue.ToString() + “ Y=” + dp.YValues[0].ToString();
}

}

  ↓

「山形」の点をクリックすると「label1」に内容を書き出します

  ↓

 

複数グラフがあるときに特定のグラフの時だけ値を表示

上のままだと直線をクリックしたときに値が出てしまいます。
これを都道府県名の時だけ表示にします。

 

private void chart1_Click(object sender, EventArgs e)
{
label1.Text = “”;

HitTestResult result;
result = this.chart1.HitTest(((MouseEventArgs)e).X, ((MouseEventArgs)e).Y);
if (result.ChartElementType == ChartElementType.DataPoint)
{
if (result.Series.Name == “散布図”)
{
DataPoint dp = result.Series.Points[result.PointIndex];
label1.Text = “エリア:” + dp.Label + “ X=” + dp.XValue.ToString() + “ Y=” + dp.YValues[0].ToString();
}
else
{
label1.Text = “”;
}
}
}

 

chartコントロールを使わない場合

Chartコントロールを使わない場合はPictureboxもしくはFormに書きます。

下に進むとY軸は+され、右に進むとX軸が+されるので
グラフの(0,0)の位置を決定してから
計算して出た値のポイントまでラインを書いていきます。

 

 

Chartコントロールの感想

昔はねぇ…こういう便利なのがなかったから大変でした。
いろいろなグラフをきれいにかけるので是非とも活用してほしいと思います。

特にこのグラフのすごい点はchartのアンカーを4方位に設定して
ウィンドウを拡縮したときに同じようにchartコントロームが拡縮したときに
スムーズに描画がされる点です。

 

 

EC-CUBE3注文・問い合わせメールを返信でお客様のアドレスに

EC-CUBE3の注文メール、お問い合わせのメールはお客様に送る内容と同じものをBCCで管理人に送っているので、マスター情報に入れてある管理人メールアドレスに届いたメールに返信をしても自分のところに戻ってきてしまいます。

これを返信したときにお客様へのメールにすぐできるようにする方法です。

 

速習!返信メールカスタム場所

\src\Eccube\Service\MailService.php

開いてみるとわかる通りお客様宛メールはここで一括管理しています。
適当にいじれば何とかなります。

 

返信メール宛先変更詳細

この3件のメールを修正します。

・お問い合わせ受付メール送信開始
・受注メール送信開始
・受注管理通知メール送信開始

どれも、管理人に送られてきたメールの宛先をお客様のメアドにするので、管理人がメールを開いて返信をすることで簡単にお客様にメールを送ることができます。

 

全体での概要

上記3つ以外のところでもカスタマイズしたい場合はこちらを参考に

①各部分で

 ->setBcc($this->BaseInfo->getEma~~~

をコメントアウト

 

②直近の

$count = $this->app->mail($message);

の下に、直上の$messageをコピペして

->setFrom(array($this->BaseInfo->getEmail01() => $this->BaseInfo->getShopName()))
->setTo(array($Order->getEmail()))
->setBcc($this->BaseInfo->getEmail01())
->setReplyTo($this->BaseInfo->getEmail03())

 

Bcc項目を削除

 

③次の項目の内容を入れ替えます

->setFrom()
->setTo()
->setReplyTo(
->setReturnPath()

 

④その下に1行追加

$count = $this->app->mail($message);

 

お問い合わせ受付メール送信

log_info(‘お問い合わせ受付メール送信開始’);
の場所を探します

次のように書き換えます

// 問い合わせ者にメール送信
$message = \Swift_Message::newInstance()
->setSubject(‘[‘ . $this->BaseInfo->getShopName() . ‘] お問い合わせを受け付けました。’)
->setFrom(array($this->BaseInfo->getEmail02() => $this->BaseInfo->getShopName()))
->setTo(array($formData[‘email’]))
//->setBcc($this->BaseInfo->getEmail02())
->setReplyTo($this->BaseInfo->getEmail02())
->setReturnPath($this->BaseInfo->getEmail04())
->setBody($body);

$event = new EventArgs(
array(
‘message’ => $message,
‘formData’ => $formData,
‘BaseInfo’ => $this->BaseInfo,
),
null
);
$this->app[‘eccube.event.dispatcher’]->dispatch(EccubeEvents::MAIL_CONTACT, $event);

$count = $this->app->mail($message);

//ここが追加部分—————
$message = \Swift_Message::newInstance()
->setSubject(‘[‘ . $this->BaseInfo->getShopName() . ‘] お問い合わせを受け付けました。’)
->setFrom(array($formData[‘email’]))
->setTo($this->BaseInfo->getEmail02())
->setReplyTo(array($formData[‘email’]))
->setReturnPath($this->BaseInfo->getEmail04())
->setBody($body);

$count = $this->app->mail($message);
//—————–

log_info(‘お問い合わせ受付メール送信完了’, array(‘count’ => $count));

 

 

受注メール送信

お客様から注文が入ったときに管理人あてにくるメールです

$message = \Swift_Message::newInstance()
->setSubject(‘[‘ . $this->BaseInfo->getShopName() . ‘] ‘ . $MailTemplate->getSubject())
->setFrom(array($this->BaseInfo->getEmail01() => $this->BaseInfo->getShopName()))
->setTo(array($Order->getEmail()))
//->setBcc($this->BaseInfo->getEmail01())
->setReplyTo($this->BaseInfo->getEmail03())
->setReturnPath($this->BaseInfo->getEmail04())
->setBody($body);

$event = new EventArgs(
array(
‘message’ => $message,
‘Order’ => $Order,
‘MailTemplate’ => $MailTemplate,
‘BaseInfo’ => $this->BaseInfo,
),
null
);
$this->app[‘eccube.event.dispatcher’]->dispatch(EccubeEvents::MAIL_ORDER, $event);

$count = $this->app->mail($message);

//ここが追加部分—————
$message = \Swift_Message::newInstance()
->setSubject(‘[‘ . $this->BaseInfo->getShopName() . ‘] ‘ . $MailTemplate->getSubject())
->setFrom(array($Order->getEmail()))
->setTo($this->BaseInfo->getEmail01())
->setReplyTo(array($Order->getEmail()))
->setReturnPath($this->BaseInfo->getEmail04())
->setBody($body);

$count = $this->app->mail($message);
//—————–

log_info(‘受注メール送信完了’, array(‘count’ => $count));

 

 

 

受注管理通知メール送信

ここは管理画面からお客様へ「発送しましたよ」とか「注文を受付しましたよ」的なメールを送る際に使用する場所です。

$message = \Swift_Message::newInstance()
->setSubject(‘[‘ . $this->BaseInfo->getShopName() . ‘] ‘ . $formData[‘subject’])
->setFrom(array($this->BaseInfo->getEmail01() => $this->BaseInfo->getShopName()))
->setTo(array($Order->getEmail()))
//->setBcc($this->BaseInfo->getEmail01())
->setReplyTo($this->BaseInfo->getEmail03())
->setReturnPath($this->BaseInfo->getEmail04())
->setBody($body);

$event = new EventArgs(
array(
‘message’ => $message,
‘Order’ => $Order,
‘formData’ => $formData,
‘BaseInfo’ => $this->BaseInfo,
),
null
);
$this->app[‘eccube.event.dispatcher’]->dispatch(EccubeEvents::MAIL_ADMIN_ORDER, $event);

$count = $this->app->mail($message);

//追加するところ—————
$message = \Swift_Message::newInstance()
->setSubject(‘[‘ . $this->BaseInfo->getShopName() . ‘] ‘ . $formData[‘subject’])
->setFrom(array($Order->getEmail()))
->setTo($this->BaseInfo->getEmail01())
->setReplyTo(array($Order->getEmail()))
->setReturnPath($this->BaseInfo->getEmail04())
->setBody($body);

$count = $this->app->mail($message);

//—————–

log_info(‘受注管理通知メール送信完了’, array(‘count’ => $count));

 

 

 

注意点

ここで修正する全部のところに共通しますが

->setBcc(

をコメントアウトすることを忘れないように。
コメントアウトしないと、管理人までメールが来てしまいます。