約 6,660 件
https://w.atwiki.jp/usonx/pages/5.html
まとめサイト作成支援ツールについて @wikiにはまとめサイト作成を支援するツールがあります。 また、 #matome_list と入力することで、注目の掲示板が一覧表示されます。 利用例)#matome_listと入力すると下記のように表示されます #matome_list
https://w.atwiki.jp/usonx/pages/41.html
プリアンプ治具 放射線試験(重粒子)で、SSDの出力を増幅するプリアンプの動作チェック治具を製作したので、そのメモを残す。 メモ I/Oピンを最適化/削減する方法 マイコンなどのI/Oの設計をしていると、全体での本数が足りなくなることが多々ある。そのような場合、I/Oピンの使い方を最適化すると、I/Oピンの本数を節約できることがある。 7セグLEDなどを使用する場合は、ドライバICを使うことで本数を減らせる(デメリットとして、ドライバによっては数字しか表示できなくなる)。 LEDなどは、ダイナミック点灯方式を採用することで、本数を減らせる。 DIPスイッチなどは、抵抗分圧(1k,2k,4k,8k~)した電圧値をA/Dで取り込めば、1本で済む。 マルチプレクサを使用する。 回路チェックの観点参考 全体 定格内かどうか? 動作温度範囲内か? ディレーティングは満たしているか? ピンアサインは合っているか? リレー SET/RESETは合っているか? フライホイールダイオードはあるか? 接点電流値は問題ないか? コイル駆動電圧/電流値は十分か? リレーは何タイプか? オペアンプ 入力電圧範囲は問題ないか? 単電源か?両電源か? レールツーレールか? ハイサイドか?ローサイドか? ゲイン設定は問題ないか? オペアンプが吐ける/吸える電流値は問題ないか? 位相余裕は十分か? 発振しないか?していないか? マイコン 発振子の周波数は、マイコンに整合しているか? リセットピンの回路は適切か? 入力/出力に誤りがないか? NCピンの処理は適切か? Timer周期は間に合うか?(内部の処理によっては間に合わないことがある A/Dの入力範囲は問題ないか? そのピンはA/Dもしくは汎用I/Oにできるのか? そのピンは FET/トランジスタ NチャンネルかPチャンネルか?その選定は適切か? 保護抵抗は入っている? 電流の流れる向きは適切か? ON抵抗は問題ないか? スイッチング周波数は、選定したFETにマッチしているか? フットプリントとのピンアサは整合とれているか?(特に間違えやすい リファレンス電圧 精度は問題ないか? 温度依存性はどうか? 吐く/吸う電流値は問題ないか? ヒューズ/ポリスイッチ 保持電流値はいくらか? 遮断時間は何秒か?その時間で問題ないか? ノミナルの抵抗値はいくらか? 電圧降下に問題はないか? ソケットにはまるか? 変えやすい場所にあるか? そのヒューズ意味あるの? 名前 コメント
https://w.atwiki.jp/usonx/pages/38.html
TeraStationがファームウェアエラー(E04)で壊れた際の復旧手順 TS-1.6TGL/R5が故障した際の覚書を記録しておきます。 発生したエラーはE04(ファームウェアエラー) Beep音と共にErrorランプが点灯していた。 マニュアルにのっとり、TeraStationを再起動したところ、エラーは消えたが、 何やらEM(エマージェンシーモード)になったらしくファイルへのアクセスができない状態となった。 この状態からの復旧手段は、メーカ修理かファームウェアのアップデートしかないとのこと。 さっそくファームウェアのアップデートを試みた。 サポート窓口 よくある質問集 トラブルシュート ファームウェア ※ファームウェアは、型番によって異なります。対応したものを使用してください。 TeraStationとPCはダイレクトに繋いだ方がよい(クロスケーブル) サブネットマスクなども合わせること。 ダウンロードしたファームウェアを解凍する。 解凍したフォルダの「nasupdater.ini」を開き、以下のように修正する。 [Flags] ×VersionCheck = 1 ○VersionCheck = 0 保存して、閉じること。 「NASUpdater.exe」を起動する。設定が正しく行われていれば、TeraStationを認識するハズである。 「ファームウェアの更新」をクリックし、しばらく放置する。 (何度か自動で、TeraStationが再起動される) 復旧する場合もある… その他参考 ウイルスバスターCorpのサービス再起動する場合 [コントロールパネル]の[管理ツール- サービス]から、[Office scan master service]を選択し再起動する。基本的に[Office scan xxx]がウイルスバスターのサービスに該当する。 最終手段としては、マシンそのものを再起動するとサービスも再起動する。 (その他のサービスが一旦停止するので、リスクあり
https://w.atwiki.jp/usonx/pages/34.html
CPLD 開発環境の確立 CPLDの勉強にヒューマンデータさんのCPLD学習ボードを購入した。XSP-019KITを購入した理由は、PLCC44ソケットなのでライターとしても使用できそうであったし、何よりXSP-019KITを使った参考書があったからだ。色々と問題にぶつかったので、状況を記録しておく。 1.ISEのバージョンが参考書と合わない まず、最初にぶつかった問題。参考書とザイリンクスで公開されているISE(CPLDの総合開発環境)のバージョンが合わない。バージョンが合わないとメニューやボタン、レイアウトがまったく違う。散々なやんだが、参考書の筆者のサポートページにISEの過去バージョンのリンクが貼ってある。その他、FAQなどもとても参考になった。 2.プリンタポートがない まず、手順を通そうとして、ぶつかったのがコレ。PCを新しくしてしまったため、レガシーポートがなくなってしまった。単純にプリンタポートがあれば良いのかと思って、玄人志向さんの1P-LPPCI3を購入し、とりつけた。デバイスマネージャ上は確かにLPT1ができ、ソフトウェア上でもポートは認識しているようだが、JTAG(この場合だと、XSP-019KITのボード)を認識しない。ポートのアドレス番号が異なるせいかと思い、あれこれしてみる(マザーボードに元々付いているものだと0x0378とか、追加の場合はまた異なったアドレスとなる)。 ザイリンクスのサポートページ JTAG関連のサポート 過去バージョン リンク JTAG関連 リンク 上記での対応を色々とやってみるが、結局は上手くいかず断念。ちなみに、他のPCのレガシーパラレルポートを使用すると上手くいった。この問題は根強く残っているのか。痛い出費だが、レガシーポートに頼らない開発環境を構築したかったので、純正のJTAGを購入することに(ここ)。なんでこんなに高いんだ。どうやらザイリンクスが価格をコントロールしている(?)みたい。ネットでちょっと探して一番安かったところで購入した。時間があればクローンJTAGを開発したかった。 3.XSP-019KITと純正JTAGの融合 せっかくXSP-019KITも購入していたので、純正JTAGとの融合を試みる。XSP-019KITの回路、RP7の集合抵抗を外し、ジャンパピン(7P)に取り替えた。これでTDO/TDI/TCK/TMSピンを確保できるようになる。また、VREF(3.3V)とGNDのピンもボート上にTPがあるので、それをジャンパピン(1P)に取り替えた。これで書き込むことができると思ったらドライバがない、というかISEが純正JTAGを認識しない。ISEのバージョンが古すぎて認識しない(ドライバもないし、ソフトウェアが対応していない)模様。仕方がないので、適当に新しめのISEを再インスト。緊張しながら、書き込みへ(iMPACT起動時には、ボードに火を入れておく必要がある)。ようやく成功~!これで、XSP-019KITを焼き冶具/テストボードとして使用できる。 4.CoolRunner XPLA3 CPLDの販売先 XSP-019KITが使用しているCPLDは、型番:XCR3064XL-10PC44Cであるが、現状で販売しているところがない(商社経由ならあるかも…)。千石電商にワンランク落ちるが、XCR3032XLが売っていた。この辺を調べていてわかったけど、型落ち品じゃn(いまさら)。暇ができたら、焼きボードを作ろうかな。 接続方法: ボードを置いて、上から順に 2.TDO(紫) 4.TDI(白) 6.TCK(黄) 8.TMS(緑) これと、GND/VREFを接続する。 ISEを使ったModelSimのやり方 使用環境: ModelSim XE III/Starter 6.2g ISE v9.2i なぜか原因がわからないが、ISEからModelSimを呼ぶことができないので、それぞれ単独で使用しシミュレーションを行う方法を記しておく。 ISEで、目的のVHDLを記述後、 NewSourceにて、「Test Bench WaveForm」を選択、「ファイル名+_tb」を付け保存すると、ISE付属のWaveFormが起動する。 ここでは、入力信号をGUI形式で設定することができる(1からVHDLで記述することもできる)。 波形入力後、保存する。 今度は、ModelSimを起動する新規プロジェクトを立ち上げ、「ファイル名_tb.vhw」を読み込む(VHDLで記述された入力波形)。 コンパイルし、実行する。見たい波形をWaveに追加する。 (石の遅延情報は入っていない。 参考資料 ISEでのsdfファイル(遅延情報)の生成 SEでコンパイル後(Implement Designを実行後)に、Implement DesignのなかのGenerate Post-Place Route Simlation Model を実行する事によりワークディレクトリ下のnetgen/fitに配線後のソースファイル及びsdfファイルが出来上がっている。 FPGA
https://w.atwiki.jp/usonx/pages/6.html
更新履歴 @wikiのwikiモードでは #recent(数字) と入力することで、wikiのページ更新履歴を表示することができます。 詳しくはこちらをご覧ください。 =>http //atwiki.jp/guide/17_117_ja.html たとえば、#recent(20)と入力すると以下のように表示されます。 取得中です。
https://w.atwiki.jp/usonx/pages/40.html
アラン分散 アラン分散とは,ジャイロや周波数発振器などの特性評価に用いられる指標の1つである.元々は,GPS 衛星に搭載する精密な時計の性能評価のために開発された指標であるが,最近では専らジャイロの特性評価に用いられている.アラン分散からは,評価対象となるモデルもしくはセンサのノイズ特性を評価することができ,センサ間の性能や性能のトレンドを評価することができる アラン分散による評価 perlプログラム 名前 コメント
https://w.atwiki.jp/usonx/pages/29.html
企画提案 倒立振子 簡易データロガー LAN I/Oユニット 無線シリアルポート 早押し機 CAPSAT USB⇒NTSCボード 自動感知式消毒器 窓バイザー自動開閉器 バーサライト LED通信 レーザー通信 次世代PC切替器 フリスクライト フリスクLCD フリスクレーザー
https://w.atwiki.jp/usonx/pages/47.html
便利でよく使う電子部品リスト 種別 型番 商社 備考 スイッチ 354-2945 RS BOBで使用しているSW チップジャック TJ10AB サトーパーツ BOBで使用している端子 ピンチップ TJ2Pクロ サトーパーツ BOBで使用している端子に合うピン スペーサー 382-961 RS M3,6mm,メス-メス スペーサー 664-3237 RS M3,10mm,メス-メス スペーサー 664-3316 RS M3,10mm,オス-メス コンデンサ 650-0080 RS 0.1uF,ラジアル 集合抵抗 522-4790 RS 1kohm コネクタ 674-2303 RS 1列ジャンパーピン コネクタ 674-2347 RS 2列ジャンパーピン スリーブ 302-9133 RS ハーネス用スリーブ SOICソケット 766-980 RS スクリーニング用 絶縁アンプ ISO124P RS Gain 1 / 注意:両電源でないと駄目 Dsub15P-L 605-8645 RS L型基板取付タイプ Dsub15S-L 605-8673 RS L型基板取付タイプ Dsub25P-L 605-8651 RS L型基板取付タイプ Dsub25S-L 605-8689 RS L型基板取付タイプ Dsub25セーバー 828-252 RS バナナ-バナナ 346-9222 RS テストリード 405-398 RS BOB用 2mmジャック K型熱電対リール 363-0389 RS ツイストペア K型熱電対用コネクタ 455-9786 RS T型熱電対リール 363-0402 RS ツイストペア ゴム手袋 JG-PF65 古本機工 高級品;Mサイズ;\2500くらい ゴム手袋 JG-PF70 古本機工 高級品;Lサイズ;\2500くらい トランジスタ 2SC-2884 601-1618 RS 表面実装 トランジスタ 2SA-1204 601-1163 RS 表面実装 チェック端子 664-7939 RS SLC-22-G-K ADC128S052に関する覚書 高速でサンプリングする場合は、2回読み込む必要がある場合がある。1回目は変なデータになるため。 GNDが弱いと変な値が出力される。GNDを指で触れて値が変化すれば、GNDが弱い。
https://w.atwiki.jp/usonx/pages/55.html
CRC CCITT 16bit private ushort CRC_CCITT_LSBfirst_ALL(ushort len, byte[] bufp) { int i,j; byte ch = 0x00; ushort crc = 0xffff; ushort POLY = 0x8408; for(j = 0;j len;j++) { ch = bufp[j]; crc ^= (ushort)ch; for (i = 0; i 8; i++) { if((crc 0x0001) == 0x0001) { crc = (ushort)(crc 1); crc ^= POLY; } else { crc = (ushort)(crc 1); } } } return crc; } string型のHEX文字をByte配列に変換する関数 using System.Runtime.Remoting.Metadata.W3cXsd2001; using System.Diagnostics; public Byte[] GetBytesFromHexString(string strInput) { Byte[] bytArOutput = new Byte[] { }; if (!string.IsNullOrEmpty(strInput) strInput.Length % 2 == 0) { SoapHexBinary hexBinary = null; try { hexBinary = SoapHexBinary.Parse(strInput); if (hexBinary != null) bytArOutput = hexBinary.Value; } catch (Exception ex) { MessageBox.Show(ex.Message); } } return bytArOutput; } シリアル通信受信時に取りこぼしが発生する際の対処方法 処理するCPUコアを変更する アプリの優先順位を変更する デバイスのFIFOバッファサイズを変更する (これは一番効果があるけど、大体最大サイズになっている) 「ここ」を参照する アクノリッチ(フリーソフト)の場合は、ソフトウェアバッファサイズを増やすと改善する。そのバッファが溢れるまでは大丈夫。 動作CPU指定 どのCPUコアで動作するかを指定する。 // 動作CPU指定 uint cpuno = 1; Process.GetCurrentProcess().ProcessorAffinity = (IntPtr)cpuno; // 自身の動作CPUを取得する。 var processor = Process.GetCurrentProcess().ProcessorAffinity.ToInt32(); cpuinf = processor.ToString(); 優先度指定 アプリの優先度を指定する。 public ProcessPriorityClass PriorityClass { get; set; } Process thisProcess = null; uint priority; thisProcess = System.Diagnostics.Process.GetCurrentProcess(); switch(priority) { case 0 thisProcess.PriorityClass = ProcessPriorityClass.Normal; break; case 1 thisProcess.PriorityClass = ProcessPriorityClass.AboveNormal; break; case 2 thisProcess.PriorityClass = ProcessPriorityClass.High; break; case 3 thisProcess.PriorityClass = ProcessPriorityClass.RealTime; break; default thisProcess.PriorityClass = ProcessPriorityClass.Normal; break; } C#からのGPIB C#でGPIBを利用するには、ここの資料がわかりやくて良かった。 GPIBのドライバ等は、ここ 参考サイト C# と VB.NET の入門サイト TCPとかはココ バージョン情報の表示 C#のバージョン情報は、「AssenmblyInfo.cs」に記述することが出来る。 以下のソースは、その情報をメッセージボックスで表示するだけ。 string str; // バージョン情報の表示 // http //www.atmarkit.co.jp/fdotnet/dotnettips/282verinfodlg/verinfodlg.html // http //jeanne.wankuma.com/tips/csharp/dialog/messagebox.html //--- // バージョン名(AssemblyInformationalVersion属性)を取得 string appVersion = Application.ProductVersion; // 製品名(AssemblyProduct属性)を取得 string appProductName = Application.ProductName; // 会社名(AssemblyCompany属性)を取得 string appCompanyName = Application.CompanyName; // 表示情報 str = "製品名 " + appProductName + "\r\n"; str += "\r\n"; str += "Version " + appVersion + "\r\n"; str += "\r\n"; str += "会社名 " + appCompanyName + "\r\n"; // 表示 MessageBox.Show(str, "バージョン情報"); 最小二乗法 C#で作っている人いた タイムスタンプ times = System.DateTime.Now.ToString() + "." + System.DateTime.Now.Millisecond.ToString("000"); str = System.Text.Encoding.GetEncoding("SHIFT-JIS").GetString(dat); log.Write(times + "," + str); グラフ(Chart)の設定とか chart1.Series.Clear(); chart1.Series.Add("PLL"); chart1.Series["PLL"].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line; chart1.ChartAreas[0].AxisY.Title = "レベル[a.u.]"; chart1.ChartAreas[0].AxisX.Title = "周波数[MHz]"; chart1.ChartAreas[0].AxisY.Minimum = 0; chart1.ChartAreas[0].AxisY.Maximum = 15000; // 凡例なし chart1.Legends.Clear(); // グラフタイトル プロパティで事前にタイトルを追加しておく必要あり chart1.Titles[0].Text = "test"; // 表示 chart1.Series["PLL"].Points.AddXY(((i + 1) * db_delta + db_offset) / 1000000, stArrayData[i]); // グラフデータクリア chart1.Series["CS0"].Points.RemoveAt(0); // グラフクリア chart1.Series.Clear(); C#でワーカースレッド using System.Threading.Tasks; Thread thread; thread = new Thread(new ThreadStart(ThreadMethod)); thread.Start(); private void ThreadMethod() { //ここに処理を書く } 時刻取得(msオーダで取得) DateTime dt = System.DateTime.Now; times = dt.ToString("yyyy/MM/dd HH mm ss") + "." + dt.Millisecond.ToString("000"); 時間シリアル値の取得 long nowtime; long diff; nowtime = DateTime.Now.ToUniversalTime().Ticks; diff = (nowtime - prevtime)/10000; // [ms] prevtimeは前のnowtimeの値 文字検索 //改行コードがあれば整数(0以上)、なければ-1が返る if (str.IndexOf("\n") 0) { // 文字の途中 } ログ保存(テキスト) バイナリ保存したいものを↓の方法で保存すると場合によってはおかしな値で保存されてしまう。 System.IO.StreamWriter log; String logPath; string file; file = System.DateTime.Now.ToString("yyyyMMddHHmmss"); file = file.Replace("/", ""); file = file.Replace(" ", ""); file = file.Replace(" ", ""); logPath = AppDomain.CurrentDomain.BaseDirectory + "Log_U3751_" + file + ".csv"; log = new System.IO.StreamWriter(logPath, true, System.Text.Encoding.GetEncoding("shift_jis")); log.Write("# Time/Freq,"); log.Flush(); // closeしなくても中身が反映される log.Close(); ログ保存(バイナリ) System.IO.FileStream jpg = null; string file; // ログ保存 file = System.DateTime.Now.ToString("yyyyMMddHHmmss"); file = file.Replace("/", ""); file = file.Replace(" ", ""); file = file.Replace(" ", ""); filePath = AppDomain.CurrentDomain.BaseDirectory + file + ".jpg"; //http //codepanic.itigo.jp/cs/file_writebinary.html jpg = new System.IO.FileStream(filePath, System.IO.FileMode.Create); // jpg画像保存(バイナリ) jpg.Write(dat, 0, dat.GetLength(0)); jpg.Close(); iniファイル using System; using System.IO; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; //クラスの中に書く private String filePath { get; set; } [DllImport("KERNEL32.DLL")] public static extern uint GetPrivateProfileString(string lpAppName, string lpKeyName, string lpDefault, StringBuilder lpReturnedString, uint nSize, string lpFileName); [DllImport("KERNEL32.DLL", EntryPoint = "GetPrivateProfileStringA")] public static extern uint GetPrivateProfileStringByByteArray(string lpAppName, string lpKeyName, string lpDefault, byte[] lpReturnedString, uint nSize, string lpFileName); [DllImport("KERNEL32.DLL")] public static extern uint GetPrivateProfileInt(string lpAppName, string lpKeyName, int nDefault, string lpFileName); [DllImport("KERNEL32.DLL")] public static extern uint WritePrivateProfileString( string lpAppName, string lpKeyName, string lpString, string lpFileName); // ini読み出し this.filePath = AppDomain.CurrentDomain.BaseDirectory + "SRAMcom.ini"; Form1.WritePrivateProfileString("COM", "baudrate", "8000000", filePath); com_baudrate = Form1.GetPrivateProfileInt("COM", "baudrate", 8000000, filePath); graph_width = Form1.GetPrivateProfileInt("Graph", "width", 100, filePath); COMポート try { // シリアルポートのオープン serialPort1.PortName = com_portname.ToString(); // シリアルポートの通信速度指定 serialPort1.BaudRate = (int)com_baudrate; // シリアルポートのパリティ指定 serialPort1.Parity = System.IO.Ports.Parity.None; // シリアルポートのビット数指定 serialPort1.DataBits = 8; // シリアルポートのストップビット指定 serialPort1.StopBits = System.IO.Ports.StopBits.One; // シリアルポートのRTS指定 serialPort1.RtsEnable = true; // シリアルポートのオープン serialPort1.Open(); } catch (Exception ex) { MessageBox.Show(ex.Message); return; } // シリアルポートのクローズ serialPort1.Close(); シリアルポートがOpenしているのかのチェック serialPort1.IsOpen == false // 閉じているなら真 シリアル送信 Byte[] dat = new byte[10]; // Once送信 if (serialPort1.IsOpen == true) { serialPort1.Write(dat, 0, dat.GetLength(0)); } シリアル受信 private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) { // 受信処理 Byte[] dat = new Byte[serialPort1.BytesToRead]; serialPort1.Read(dat, 0, dat.GetLength(0)); } シリアル受信の中でテキストボックスを更新(デリゲート) // namespaceの外側に記載 delegate void MyDelegate(string text); private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) { string str; // 受信処理 Byte[] dat = new Byte[serialPort1.BytesToRead]; serialPort1.Read(dat, 0, dat.GetLength(0)); str = ""; for (int i = 0; i dat.GetLength(0);i++ ) str += dat[i].ToString("X2"); //スレッド内からデリゲートを介して以下のようにして呼ぶ //Invoke(new MyDelegate(AddText), str); BeginInvoke(new MyDelegate(AddText), str); // 少し待つ System.Threading.Thread.Sleep(1); } internal void AddText(string text) { textBox2.Text = text; } Timer 通常のTimer(精度はあまりよくない55ms下限)、もっと精度が欲しいときは、「System.Timers.Timer」を使用するらしい。 // デザイナーのコード private void InitializeComponent() { this.timer1 = new System.Windows.Forms.Timer(); this.timer1.Enabled = true; this.timer1.Interval = 200; this.timer1.Tick += new System.EventHandler(this.timer1_Tick); } スタートさせるときは、 timer1.Start(); ストップするときは、 timer1.Stop(); テキストボックス 変数をテキストボックスに表示するには、以下のようにする this.textBox1.Text = "" + i; 種々の変換 文字列から数字 string str = "123456789"; int num = int.Parse(str); double num = double.Parse(str); myData[0] = byte.Parse(stArrayData[0], System.Globalization.NumberStyles.AllowHexSpecifier); 文字列から切り出し str1.Substring( 0, 2); float(IEEE754)変換 数字からHEXへ floatflo_in; byte[] chr = new byte[8]; byte*p_flo; flo_in = float.Parse(textBox1.Text); p_flo = (byte *) flo_in; chr[0] = p_flo[0]; chr[1] = p_flo[1]; chr[2] = p_flo[2]; chr[3] = p_flo[3]; textBox2.Text = chr[3].ToString("X2") + chr[2].ToString("X2") + chr[1].ToString("X2") + chr[0].ToString("X2"); HEXから数字へ string hexString = textBox3.Text; uint num = uint.Parse(hexString, System.Globalization.NumberStyles.AllowHexSpecifier); byte[] floatVals = BitConverter.GetBytes(num); float f = BitConverter.ToSingle(floatVals, 0); textBox4.Text = f.ToString(); 数字から数字(文字) data.ToString("X2") //数字を16進数に変換 data.ToString("F3") //実数を少数3桁で表示 data.ToString("D2") //整数2桁で表示 数字から文字列 str = num.ToString(); 区切り文字 string stCsvData = "5, Jitta, ABC"; // カンマ区切りで分割して配列に格納する string[] stArrayData = stCsvData.Split( , ); 特定の文字の出現数を数える public static int CountChar(string s, char c) { return s.Length - s.Replace(c.ToString(), "").Length; } Console.WriteLine(CountChar(s, の )); テキストボックス 最後の行までスクロールする TextBox1.SelectionStart = TextBox1.Text.Length //テキストボックスにフォーカスを移動 TextBox1.Focus(); //カレット位置までスクロール TextBox1.ScrollToCaret(); 行数を得る textBox1.Lines.Length n行目の中身を得る str = textBox1.Lines[i];
https://w.atwiki.jp/usonx/pages/20.html
技術資料の元ネタ 太陽電池モデル計算の仕方 STKのセンサモジュールに任意の視野を設定する方法 STKとGISツールによる視野解析の方法 STK用の3Dモデルの製作の仕方 3Dプリンタの使い方 改善提案(笑) 工具のラベル化 メーラーの統一 Officeバージョンの統一 社用車にあさの駐車マップを搭載する バイオのカキガラを洗うのに精米所洗う機械を導入 計測器の簡易マニュアルを、計測器に貼付けておく 宇宙用部品のデータベース化 除湿機/加湿器の導入 ウイルススキャン時間の変更 車の窓ガラス解氷スプレー アジェンダを設定する 議事録係を決める 小規模の会議に時間を小分けする 「オフィスアワー」を設定する 政治力は使わない、データを基本とする 時間を守る クリーンルームへの加湿機の導入 湿度管理のエアコンの導入 よく使う単語、フレーズを辞書に登録しておく 迷惑メールの自動振り分けを行う 机上のレイアウトを変える 部長に安心だフォンを持たせる 会議は事前にアジェンダを配布する アジェンダのない会議はやらない 会議の冒頭に会議の目的を確認する ホワイトボードを書いたらすぐに消す 設計審査で配布する資料を減らす 朝の一言の担当者が、村田さんの対応をする 自販機のラインナップを変更する ラジオ体操の時間を変更する 会議終了後に直ちに議事録を展開する 会議を時間通りに始める 会議の結論を必ず出す 開けたドアを確実に閉めるため、研開棟のドア全てを自動ドアにする。 会議に遅れる際は必ず連絡する 会議の遅刻者を減らすために 議事録の共同注視 改善提案ニュースを発行する 軍手をゴムイボ付きのものにする 部ごとに年間の改善提案件数を目標に掲げる アイポを導入する ドアをきちっと締める 地球温暖化防止のため、エアダスターの変わりにCO2スプレーを使用する。 研開棟の全館放送のスピーカーを使って(昼食時等に)BGMを流す。または、ラジオ体操をする。 とくぺぱを使用する LED蛍光灯を使用する 断熱フィルムを貼る オフィス講習 枚数によっては、印刷機(プリンタ)を使用する