1 名前:デフォルトの名無しさん [2005/09/06(火) 17:13:46 ] まったり逝きましょう。 ハード寄りの話も大歓迎です。 道具話も楽しくやれるならやってくらさい。 この世界は処理系依存はあたりまえだから、処理系明記するのを忘れないでね! 過去ログ 制御系なら俺に聞いてもいいぜ(7) pc8.2ch.net/test/read.cgi/tech/1109102528/ 制御系なら俺に聞いてもいいぜ(6) fun.kz/test/read.cgi/tech/1099574832/ (新タイプミラー) 制御系なら俺に聞いてもいいぜ(5) fun.kz/test/read.cgi/tech/1079102543/ (新タイプミラー) 制御系なら俺に聞いてもいいぞ(4) pc5.2ch.net/test/read.cgi/tech/1068869894/ (行方不明) 制御系なら俺に聞いてもいいぞ(3) pc2.2ch.net/tech/kako/1059/10594/1059488975.html 制御系なら俺に聞いてもいいぞ(2) pc2.2ch.net/tech/kako/1038/10380/1038094914.html 制御系なら、俺に聞け! pc3.2ch.net/tech/kako/1002/10021/1002176627.html 関連過去ログ ●●●くみこの組み込み相談室●●● pc3.2ch.net/tech/kako/988/988084737.html
2 名前:デフォルトの名無しさん [2005/09/06(火) 17:39:17 ] 没スレ乙
3 名前:デフォルトの名無しさん [2005/09/06(火) 17:42:03 ] 制御系とはなんですか?
4 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 06:41:07 ] のっけから凄い質問が(^o^)・・・ 一応釣られてあげると、機器の制御専用に使われるマイコン をプログラムする仕事です。 Winなんかと違って、昔のプログラム習慣が生き残っていたり、 いまだにASMオンリーだったり。パソコンより低脳の石が主流。ある程度ハードの知識も要ります。
5 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 07:42:55 ] と、組み込み系しか制御系じゃないと思い込んでる>4が回答しております。
6 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 08:35:43 ] 俺は産業用パソコンで組んだことがあるな。 石なんだったかな〜? Pentiumの何か。 でも、普通、組み込み系を想像するよね。
7 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 09:14:27 ] まーこのスレは何でもアリでしょう みんなの所の仕事も色々やらされてない?
8 名前:4 mailto:sage [2005/09/07(水) 16:51:37 ] あ〜、すいません、俺はたしかにクミコ系ばっかり。パソコンで産業用機器の制御指令を 出すような分野も含むのね。でも過去の話題もクミコ系が多かったですね。
9 名前:デフォルトの名無しさん [2005/09/07(水) 20:30:10 ] >>5 ならてめーが回答するときは、 すべてのケースを想定してんのかよ うぜーんだよぼけ くそ
10 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 20:43:13 ] 携帯関係は制御系ですか?
11 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 21:04:56 ] 冷蔵庫関係は制御系ですか?
12 名前:デフォルトの名無しさん [2005/09/07(水) 22:12:05 ] 本屋で組み込み入門みたいな雑誌が置いてたよ。 Cマガジンあたりの隣に
13 名前:デフォルトの名無しさん [2005/09/07(水) 22:59:05 ] 組込みプレス Startup Issue www.gihyo.co.jp/magazines/kumikomi 創刊準備号
14 名前:デフォルトの名無しさん mailto:sage [2005/09/08(木) 00:10:43 ] 眠たいときは制御系が朝鮮系に見える
15 名前:デフォルトの名無しさん mailto:sage [2005/09/08(木) 20:57:39 ] >>13 あーこれこれ。
16 名前:デフォルトの名無しさん mailto:sage [2005/09/09(金) 04:04:31 ] 凄いな、プレス機も組み込みなのか
17 名前:デフォルトの名無しさん mailto:sage [2005/09/09(金) 04:54:05 ] >>16 つ ttp://www.mcm-tech.co.jp/products/s_press/
18 名前:デフォルトの名無しさん [2005/09/13(火) 23:31:08 ] T-Engineのやりかたおしえて
19 名前:デフォルトの名無しさん mailto:sage [2005/09/13(火) 23:40:18 ] >>18 まず、完成形を決める
20 名前:デフォルトの名無しさん mailto:sage [2005/09/14(水) 00:22:51 ] >>18 名大大学院 情報科学研究科に進学する
21 名前:デフォルトの名無しさん [2005/09/15(木) 02:29:31 ] T-Kernelの仕様書とかいうのを買ったんだけど これをコーディングすればあっというまに T-Kernelのできあがりなの?
22 名前:デフォルトの名無しさん mailto:sage [2005/09/15(木) 02:32:21 ] そうだ
23 名前:デフォルトの名無しさん mailto:sage [2005/09/15(木) 06:12:35 ] あっというまに は言い過ぎだな。さんざんアホな馬具を出しまくった後に。
24 名前:デフォルトの名無しさん mailto:sage [2005/09/15(木) 09:00:04 ] >>21 ソースはここで申し込めばダウンロードできる。 www.t-engine.org/japanese.html
25 名前:デフォルトの名無しさん [2005/09/15(木) 19:45:03 ] >>24 個人情報の入力がうざいので1から作ることにしました。
26 名前:デフォルトの名無しさん mailto:sage [2005/09/16(金) 16:06:09 ] 質問なのですが 仕事でunixでCでソケットを使うプログラムをつくってるひとっておられますか? unixプログラミングのスレのひとは学生しかいないみたいなんですけど、、。
27 名前:デフォルトの名無しさん mailto:sage [2005/09/16(金) 16:07:01 ] 作ってましたが何か。
28 名前:デフォルトの名無しさん mailto:sage [2005/09/16(金) 16:30:13 ] >>27 さすが レス有難うございます。 やはり、デバイスドライバとかも書けないと私は使い物にならないのでしょうか?
29 名前:デフォルトの名無しさん mailto:sage [2005/09/16(金) 17:09:27 ] 頭が痛くなってきた
30 名前:27 mailto:sage [2005/09/16(金) 18:35:48 ] 私はデバイスドライバなど書いたことはない! 書けるかと聞かれたら、当然「書けるように努力する」と答えるのみ(ぉぃ
31 名前:デフォルトの名無しさん mailto:sage [2005/09/17(土) 22:14:43 ] デバドラって名前が何か格好いい
32 名前:デフォルトの名無しさん mailto:sage [2005/09/17(土) 22:45:43 ] 連ドラと似たようなもんだと思うが。
33 名前:デフォルトの名無しさん [2005/09/18(日) 16:07:27 ] OSは使わない ほとんど静的に周辺機器や変数のサイズが決まってしまう こんな環境でオブジェクト指向風に組む価値はあるのでしょうか?
34 名前:デフォルトの名無しさん mailto:sage [2005/09/18(日) 16:12:38 ] >>33 それだけではなんともいえない。つーか、オブジェクト指向は周辺機器やOSによって左右されるわけではない。
35 名前:デフォルトの名無しさん mailto:sage [2005/09/18(日) 19:11:00 ] >>33 あんまり徹底的にやらず、妥協したほうがいい。 でも、その考え方を知っていると 「情報隔離」の考え方をできるので、モジュール分けのときに「デバイス対応」の分け方をできる。 俺はその原則+多少の妥協をこんなふうにやった。格納=ライトルーチン(そのルーチンはドライバを使い 実際のデバイスに書き込む) 参照=ライトルーチン内のキャッシュに残ってる情報を返す、実際のデバイス ドライバにはアクセスしない。 非対称ではあるけれど、アクセス速度・デバイスの書き込み制限、 などからこうするのがベターだった。
36 名前:デフォルトの名無しさん mailto:sage [2005/09/18(日) 21:53:34 ] >>35 意味わかんないよ。悪いけど。
37 名前:デフォルトの名無しさん [2005/09/18(日) 22:08:53 ] デバイス − ドライバ − ルーチン − 格納 キャッシュ − 参照 データ構造 キャッシュ 手続き なんとかルーチン::格納() { ドライバがうんたらかんたら キャッシュになんかする? } なんとかルーチン::参照() { キャッシュの情報? } 俺もよくわからん
38 名前:デフォルトの名無しさん mailto:sage [2005/09/18(日) 22:57:51 ] こういう人がプロジェクトにいると困るよね 一人プロジェクトを任せるときには便利だけと チームものは無理だな
39 名前:35 mailto:sage [2005/09/19(月) 05:05:57 ] うん、俺は小物専門だから常に一人。内部摩擦係数ゼロでお気楽。
40 名前:33 [2005/09/20(火) 07:05:14 ] ちょっと抽象的すぎてわかりにくかったと思います。 もう少し書くと、動的にオブジェクトを生成したりすることなく すべて静的に決まってしまう用途という意味です。
41 名前:デフォルトの名無しさん mailto:sage [2005/09/20(火) 07:52:11 ] >>40 >>34 まして、動的かどうかとも直接関係がない。
42 名前:デフォルトの名無しさん mailto:sage [2005/09/20(火) 08:00:22 ] まあCでOOやるなら FILE 方式。 つまり、 1、openで何かの初期化した構造体へのポインタを返すと同時にハードを初期化して その構造体の中身を教えないという手もある。 つまり、void * で渡してしまう。 2、アクセス関数の最初の引数は その構造体へのポインタ 実際の関数は、その構造体中に関数ポインタが埋められていて、そっちが処理する。 ⇒利用者はそういう構造を知らない ⇒同じアクセス関数が、openの仕方によ変化する が操作方法は当然同じ だろうな
43 名前:デフォルトの名無しさん mailto:sage [2005/09/20(火) 09:51:47 ] >>40 意味はある。 ハードは性的にキマってるとしても ソフト、とくに何らかの通信プロトコルのようなものや 単純な状態遷移を実装するときはC++便利だよ。 何も考えなくてもいいからな。newは当然使用禁止な。
44 名前:デフォルトの名無しさん [2005/09/20(火) 22:03:55 ] >>40 静的に決まるなら配列でやればよい 何もmallocだfreeだとかnewだとかdeleteだとかにこだわらなくてもよい
45 名前:デフォルトの名無しさん mailto:sage [2005/09/20(火) 23:54:02 ] つまり、>40は動的オブジェクトこそがOOだと思っているということか? まぁ、>42も似たようなもんか。
46 名前:デフォルトの名無しさん [2005/09/21(水) 00:02:36 ] そんな一方的にイワンでも・・
47 名前:42 mailto:sage [2005/09/21(水) 06:43:52 ] >>45 おいおい、ポインタを返すから動的って決め付けはどうかな
48 名前:デフォルトの名無しさん mailto:sage [2005/09/21(水) 07:40:34 ] いや、「ポインタを返す」からじゃなくて「実装方法に拘泥している」から。
49 名前:42 mailto:sage [2005/09/21(水) 07:47:48 ] ああそういう事か。 そこらへんはセンスだから、お好きなように。 といっても、作り手と利用者をしっかり分けられるこういうスタイルになると思うけどね
50 名前:デフォルトの名無しさん mailto:sage [2005/09/21(水) 10:19:25 ] 実装方法に拘泥したコーディング なんちゃってゲハハ
51 名前:デフォルトの名無しさん mailto:sage [2005/09/21(水) 19:12:22 ] どこで笑えばいいの?
52 名前:デフォルトの名無しさん [2005/09/25(日) 13:42:48 ] 多分「拘泥」と「「コーディ」ング」をかけたところが本人的に すばらしく知的でハイセンスなギャグだと感じて この感動を2chの皆様にも披露したくなったんではないでしょうか
53 名前:デフォルトの名無しさん mailto:sage [2005/09/25(日) 15:13:28 ] 最近見かける、会社の入り口に置いてある電話番号案内も制御系か? ああ言うの作る仕事に転職したいんだが
54 名前:デフォルトの名無しさん mailto:sage [2005/09/25(日) 16:56:37 ] いや、あれは単に交換機の仕様からメモし直して貼ってあるだけかと。電話番号案内を 作るみたいな仕事は制御系とは違うぞ。 交換機のほうを作るのは制御系だが。
55 名前:デフォルトの名無しさん mailto:sage [2005/10/05(水) 20:10:14 ] uartのringバッファの管理について、こんなことを考えました。 ライトポインタ・リードポインタ・バッファ内滞留数をuintで考えます。 バッファ内滞留数はタスク側・割り込み側両方で++/--するので、タスク側でdi/eiが必用。 ライトポインタは書き込み側のみが、リードポインタは読み込み側のみがそれぞれ変更します。 「バッファ内に有効バイトがあるかどうか」だけなら「滞留バイト数」の情報は不要で、 (書き込みポインタ != 読み込みポインタ) の判定でできます。今は滞留バイト数を参照して 例えばバッファのサイズを超えて書き込むなどを避けているのですが、 「ライトポインタとリードポインタ(どちらも2のn乗のバッファサイズのモジュロで循環している)だけから 滞留バイト数を計算する」 ことは可能でしょうか? それが可能なら「滞留バイト数」の情報を削ることができて(゚Д゚)ウマーなのですが。
56 名前:デフォルトの名無しさん mailto:sage [2005/10/05(水) 20:30:58 ] □1、理屈の上ではこの手のFIFO処理で割り込み禁止する必要はない。 たとえば、シリアル受信の場合 割り込みでwp メインでrp を更新するが メインでrpを更新してから、実際に書き込む実装、つまり 1、 wrp :=rp; 2、 rp := ( rp+1) mod BufSize; 3、 with wrp^ do begin メンバの設定 ;end とすれば、どこで割り込まれても困りはしない □2、 で、バッファにあるデータのサイズは Size = ( (wp-BufTop) - (rp-BufTop) +BufSize) % BufSize; Size = ( wp - rp +BufSize) % BufSize;
57 名前:55 mailto:sage [2005/10/06(木) 06:35:52 ] □1は知ってます。di/eiは滞留数の更新時だけやってます。 □2:ありがとうございます。幾つか数値を入れてやってみたらうまくいきますね。 ラップアラウンド中どうなるかが判らなかったので質問したのですが、ヤッホー(^o^)
58 名前:デフォルトの名無しさん mailto:sage [2005/10/06(木) 07:15:37 ] 2のべき乗のサイズならmodの部分は and か bclr で 書ける
59 名前:55 mailto:sage [2005/10/06(木) 09:02:26 ] □2について、「滞留数」情報の有るときと1点だけ違いが見つかりました。 滞留数情報があれば、wp==rp で、滞留数==BufSizeという、極端な滞留が許されるのですが、 滞留数情報が無いと、滞留数は (BufSize-1) までになりますね。 でも、ふつうはそこまで溜めないうちにガードがかかるようにシステム/アプリを作るはずだから 問題にはならないとおもいます。 >>58 そうですね。遅い石なのでその辺も使ってます。sizeof 配列 が2**nなら %演算を書いても cが and を出してくれるかどうか試してみようとおもってます。
60 名前:デフォルトの名無しさん mailto:sage [2005/10/06(木) 09:28:01 ] wp=rpを使うとなると、メイン側で、バッファの値を読むところまで 割り込み禁止しないといけない そうすると、禁止されてる間に処理しなければいけないデータが来たときに厄介だよ
61 名前:55 mailto:sage [2005/10/06(木) 10:05:12 ] なので、受信側は滞留数情報を残しました。送信側についてだけ、wp、rpのみでやります。 すると、wpとrpが同じか判断するところは割り込み側にだけあるようにできます。 LSIC-80の8085機能でやってみたら、%演算書いても cが and にしてくれました。 演算量は8085なのであまり減りませんでしたね。wordの比較を8bitACCでやるから。 H8あたりだとウマーなのですが。 でもcコードは簡潔になったから(・∀・)イイ!。 受信側は、「受信滞留あり?」をメインループで判定する構造にしてるので、滞留数情報を 残しました。wpとrpを比較するコードより滞留数intがゼロかどうか見るコードのほうが軽いから。 ちなみにwp^rpと書くと16bitのXORをインライン展開して、wp!=rpと書くと call word比較が出ました。
62 名前:デフォルトの名無しさん mailto:sage [2005/10/07(金) 23:13:25 ] ていうか受信にリングバッファなんて必要? どうせマイコンでやるようなシリアル通信なら相手から来るコマンドなり何なりは デリミタ付きなりパケットにデータ長が含まれてるなりするわけでしょ? つまり、ある1バイトを受信したとき、その時点でそこが一区切りの情報かどうか はっきりするわけだ。 だったらその時点で受信バッファの内容を「コマンドバッファ」にコピーしたらいいじゃん。 そうすりゃ受信をリングバッファにする必要なんてないよ。 もちろんこの方式でも、コマンドバッファの内容が未処理のうちに 次のコマンドの受信が完了してしまったらどうするのかって問題はあるが。
63 名前:デフォルトの名無しさん mailto:sage [2005/10/08(土) 01:12:17 ] >>62 寝言は寝てからにしてくださいね
64 名前:デフォルトの名無しさん mailto:sage [2005/10/08(土) 01:40:45 ] >>63 幼稚な奴。 どうせ反論するなら、なぜ受信バッファはベタな配列ではなく キューにする必要があるのか根拠を言えばいいのに。 まあそんな能力はないのに口だけ出したいんだろうけど。 今日日こういうレスする奴が40面下げたオッサンだったりするんだよなあw
65 名前:デフォルトの名無しさん mailto:sage [2005/10/08(土) 01:48:59 ] >>62 (><)ノ お答えしまっす! 確かに電文が短いうちはそれでいいと思うけど なが〜い電文を逐次処理する羽目になったときに リングバッファがいるかな〜 という感じです!
66 名前:デフォルトの名無しさん mailto:sage [2005/10/08(土) 02:18:43 ] データの長さは関係ないと思うけど。 っていうか、普通は(逐次処理できるのなら)逐次処理できるからこそ リングバッファなんてイラネってなるはずだと思うけど。 例えばWinのメッセジーキューはPOSTされたメッセージを逐次処理できないんで キューになってるわけね。 マイコンでやるようなシリアル通信なんてたいていはデリミタか指定バイト数分受信したら 受信バッファの内容を全部パーサーに投げればいいような処理でしょ。 こんなのリングバッファでやる必要なんて全くないじゃん。
67 名前:デフォルトの名無しさん mailto:sage [2005/10/08(土) 02:44:13 ] >>66 (><)ノ 補足しまっす! リングバッファのもうひとつの利点は シリアル受信を割り込み屋さんにお任せすることにより キューを処理中にもガスガスとデータ受信できることで、 これがただのベタ配列だと あー キューを2本用意すれば いけると思ったあなた! 鋭いですが そのキューの処理は >>62 でご自身も書いてますように いろいろある感じです!
68 名前:名無し募集中。。。 mailto:sage [2005/10/08(土) 02:45:44 ] リングバッファが複雑すぎて作れないって人は無理に作らなくて良いよ
69 名前:デフォルトの名無しさん mailto:sage [2005/10/08(土) 02:49:08 ] 複雑すぎるという言葉自体に驚いた
70 名前:デフォルトの名無しさん mailto:sage [2005/10/08(土) 02:59:09 ] (><)ノ データ受信とメイン処理を一緒にするのはお勧めしません! >>66 のようにコードを書くと、データの受信のあとに 処理が終わるまで次のデータは受信できない? ということに なりかねないコードになります。 相手は問答無用でデータを 押し付けてくる機械マンのケースが多いので、つらいDEATH。 じゃあデータの処理を別スレッドに飛ばそうか? とかいうと つまんない受信処理が本スレ、メインの処理は別スレ、と なんだかコードの視認性が悪くなってしまいますのです。
71 名前:デフォルトの名無しさん mailto:sage [2005/10/08(土) 03:07:35 ] (><)ノ ですが、限定された条件下でなら確かにリングバッファは不要です! 短かめのデータ受信→なんか処理→ACK/NAK返送 という流れが確定し、今後30年はその仕様に変化がないと クライアント様にハンコを突かせたなら、もうそれは>>66 さんの コードで必要十分なわけです。これはこれで見やすくなります。
72 名前:デフォルトの名無しさん mailto:sage [2005/10/08(土) 03:12:03 ] >>67 >>70 わかってないな。 >>62 に書いた「問題」ってのはリングバッファでリングが一週回ってしまった 場合の問題とほとんど等価だよ。 つまりどちらにしろ問題は起こりうるわけで、それはリングバッファを採用する 理由にはなりにくい。 >>>66 のようにコードを書くと、データの受信のあとに >処理が終わるまで次のデータは受信できない? ということに なりません。今日的な常識でいって普通はね。 前のコマンドの受信完了から次のコマンドの受信完了までの時間はまあ 短くてもmSecのオーダーといっていいだろう。 パーサーがコールされるまでにmSecオーダーレイテンシがありうるシステムなんて 今時ありえんでしょ。 仮にあるとすれば、リングバッファにしようがどんなデータ構造を採用しようが 同じこと。いずれ地獄は来ることになる。
73 名前:55 mailto:sage [2005/10/08(土) 03:18:44 ] 私の製品の実装例では、4.8Kで受信、数十バイト可変長のASCIIフレームが揃ったらその中から 数値情報を抽出するなんてことをやります。1文字の受信間隔は2mS、CPUは3MHzの8bitで 乗除算命令が無いので、sscanfの整数変換相当の機能を実行するのに数十mSオーダーで 時間かかります。ですからあるフレームの処理中に普通に次のフレームの頭何バイトかは受信が あるわけで、>>62 や>>66 みたいなわけには行かないのです。
74 名前:55 mailto:sage [2005/10/08(土) 03:24:48 ] すげ〜な、こんな時間に起きてる人が少なくとも2人・・・ 私は早起きのほうですが。 リングバッファのサイズは、受信では重い処理が何十ミリかかるか、送信では一度にどの位 の情報を書くかを見つくろって決めます。全部で8KBしかないメモリを、制御用変数とスタックと リングでやりくりします。
75 名前:デフォルトの名無しさん mailto:sage [2005/10/08(土) 03:32:10 ] >>74 (><)ノ バトンタッチします! 逃げるついでに今から仮眠取ってきます!
76 名前:デフォルトの名無しさん mailto:sage [2005/10/08(土) 06:54:06 ] せっかくFIFO式(リングバッファ)にしているのに、最後に コマンドバッファド式にコピーして使ってるせいで台無しになってるコードをメインテナンスした所だ。 コマンドバッファ式だと、受信して処理して結果を返すというサイクルで回ってる間は問題ない。 でも、通信路の速度を最大にしようとすると、 コマンドを処理している間に次の受信をさせる事になる。 受けと取って処理して返信だと、処理時間がゼロでも2倍以上かかる。 USBーシリアルなんて使うと、さらにディレイが入る事になる。 PCやマイコンは高性能になっても、通信路(ボーレート)は物理的な制限で上げられないし USB-シリアルの遅延なんてのはボーレートを上げても改善しない。 だから、コマンドを結果を待たずに、FIFOがある限りどんどん送りつけて(フロー制御して) という方向になってるわけよ
77 名前:デフォルトの名無しさん mailto:sage [2005/10/08(土) 07:15:39 ] >もちろんこの方式でも、コマンドバッファの内容が未処理のうちに >次のコマンドの受信が完了してしまったらどうするのかって問題はあるが。 この対策がフロー制御です。 FIFO(リングバッファ)を持っていると メイン: 返信用FIFOが一杯(に近づいていれば) コマンド処理をしない 受信: 受信FIFOが一杯に近づいて来たら、(ちょっと待ってね)状態にする。 という決まったスタイルで安全に対応出来ます。 (ちょっと待ってね)状態にしても何バイトか送りつけられる事が殆どなので、それを考慮するとか、 コマンド処理が分散して処理されて時間がかかる場合は、それを考慮するとか そういう事も、決まったスタイルには含まれています。 コマンドバッファ方式だと、コマンドを受け取って即座に(ちょっと待ってね)状態にしないといけないでしょ? そうすると、一般的に通信速度が上がらないわけで、そっから、「対策しる!」と言われたら、 あちこち対策入れて、だんだん訳が判らない状態になるわけです。 そんなわけで、PICのようによほど小さい規模のマイコンで無い限りは、シリアル通信ではFIFOを 入れるというのが一般的です
78 名前:デフォルトの名無しさん mailto:sage [2005/10/09(日) 15:22:21 ] ハードにFIFOを持っているが、ハードのFIFO自身にフロー制御機構を持たない場合、停止要求してから 何バイトもダダ漏れになるから(一昔前のPCの大部分に載ってたNS16550Aとか)、フロー制御を下手に 過信するのは危険だし、それなりの対策は打っておくのが普通。
79 名前:デフォルトの名無しさん [2005/10/15(土) 11:43:23 ] 保守あげ
80 名前:デフォルトの名無しさん mailto:sage [2005/10/15(土) 13:52:09 ] >>78 そのハード、アラート信号線とか無いの?
81 名前:デフォルトの名無しさん mailto:sage [2005/10/15(土) 13:55:23 ] >>80 >ハードのFIFO自身にフロー制御機構を持たない場合
82 名前:デフォルトの名無しさん mailto:sage [2005/10/15(土) 13:59:32 ] >>81 あ、そうかw 3本線で工場内を繋いでるのかw
83 名前:デフォルトの名無しさん [2005/10/15(土) 14:02:05 ] >>82 飛躍しすぎ
84 名前:デフォルトの名無しさん mailto:sage [2005/10/15(土) 14:08:16 ] まあ、FIFO内のコードを全部解読してから実際のコマンドを発行する仕組みにすれば良いのではないか? そうそう途切れる事無くコードが送られて来る事も無いだろうに。
85 名前:デフォルトの名無しさん mailto:sage [2005/10/15(土) 14:20:23 ] おまいらのにプロセッサボードにはシリアルポートしか付いてないのか?
86 名前:デフォルトの名無しさん mailto:sage [2005/10/15(土) 14:22:45 ] >>85 つうより、ハード屋さんがそれしか繋げてくれなかったって場合の話らしいよ。
87 名前:デフォルトの名無しさん mailto:sage [2005/10/15(土) 14:22:51 ] >>85 エーテルネットやらUSBやら無線やらうらやましいです
88 名前:デフォルトの名無しさん mailto:sage [2005/10/15(土) 20:50:50 ] >>85 たまに3ポート内蔵とかだとウキウキしちゃうよね。 LEDでモールスはもう面倒になってきました。
89 名前:デフォルトの名無しさん mailto:sage [2005/10/27(木) 00:37:34 ] スレ違いかもしれないですが、 WindowsでUSB接続のデバイスを扱うプロクラムを 作りました。 そのデバイスドライバをインストール させるのに、Windowsのコマンドか何か(API)からインストール させる方法をご教示ください。 プログラムのインストーラまでは作ったのですが、 そのデバイスドライバも一緒にそのインストーラで インストールさせたいです。 infファイルとsysファイル、関連dllはあります。 今は、USBを接続させ、ウィンドウズの自動認識による ドライバインストールのウィザードからインストール させるようにしています。
90 名前:デフォルトの名無しさん mailto:sage [2005/10/27(木) 03:50:52 ] >>89 昔のWin DDKにinfファイルからドライバインストールするサンプルコードが付いてたな 俺はそれをDLLにして、InstallShieldから呼び出して使ったよ。 最近はその辺触ってないし、DDKもDLできなくなっちゃったからわからんけど、 Win関係のスレで聞いたほうがいいかもね
91 名前:デフォルトの名無しさん mailto:sage [2005/10/27(木) 09:54:07 ] >>90 そうです、まさしくそれをしたいです。 「デバイス ドライバ インストール」等で ぐぐったりしましたが、なかなか見つかりませんでした。 Win関連板、スレの場合、多分OSの基本的な 話題ばかりかと思い、実践している方が多そうな このスレで聞いてみました。
92 名前:デフォルトの名無しさん mailto:sage [2005/10/27(木) 11:42:26 ] >>91 寧ろこのスレはインストーラーなんて興味ないって香具師が多い希ガス。 現にうちのプロジェクトなら、「ドライバをインストールしてください」の一言で終わる。
93 名前:デフォルトの名無しさん mailto:sage [2005/10/27(木) 11:47:06 ] 過疎ってるけど、WDMスレのが近いかな
94 名前:デフォルトの名無しさん [2005/10/29(土) 07:15:04 ] 教えてください。 mbm.livewiredev.com/ [INFORMATION]で[SHARED MEMORY]の項目を選び、[C CODE]の中の C++Class Wrapper can be downloaded here, thanks to Raoul を選んでダウンロードし解凍(するとcmbm.cpp とccmbm.h)してVB6.0でDLLを作成した。その際、 ,(即興的っつーかテスト用に)、関数を追加した。そしてvb6.0から関数をコールしたら、 ReadValues()は、connect()から(内部で)参照されたときはエラーになってないようなのですが、 getSensorType()から(内部で)参照されたときには↓のところでエラーになるのです。何故でしょうか。 bool CMBM::ReadValues(); // connect()とgetSensorType();から参照されている { data = (TSharedData *)MapViewOfFile(hMapFile, FILE_MAP_READ, 0, 0, 0); <―でエラー if (data == NULL) { Connected = false; return Connected; } return true; }
95 名前:デフォルトの名無しさん [2005/10/29(土) 07:17:03 ] テスト用に便宜的に追加した関数とは↓です。 int CMBM::getNbSensorvbType(int n_sensor) { int is; is= n_sensor; TsensorType tt; tt = getSensorType(is); is = getNbSensor(tt); return is; } 追加した理由は、getSensorTypeでは戻値、getNbSensor()では引数として使われている TsensorTypeに対応するパラメータの型を、vb6.0では俺にはできなかったから。
96 名前:デフォルトの名無しさん mailto:sage [2005/10/29(土) 12:20:12 ] 回答者はそれをダウンロードして試した上で俺様に答えるべき、とでも思ってるのかな。 まあ問題の性質上しょうがないのかも知れないが、 それでもせめてエラーの内容ぐらい書けばいいのに。 っていうか、スレ違いのような気がする。 まあマルチがはわわ〜、なんだろうけどさ。
97 名前:デフォルトの名無しさん [2005/10/29(土) 16:42:02 ] vb6のデバッグモードでの実行時のエラーメッセージ 以下の[ ]や( )の文は説明のためであって、表示されたものではない。 (ダイアログメッセージボックス) VB6.EXE-アプリケーションエラー “0×038644bd”の命令が”0×03861036”のメモリを参照しましたが、メモリが”written”になることは できませんでした。プログラムを終了するには・・・・・・ プログラムをデバッグするには キャンセル をクリックしてください。 ↓[キャンセルボタン] (ダイアログメッセージボックス) Microsoft VisuaI C++ ハンドルされてない例外は、VB6.EXE(CMBPRJ.DLL)にあります。:0×C0000005: Access Violation ↓[OK ボタン] (cmbm.cpp) bool CMBM::ReadValues() { ⇒ data = (TSharedData *)MapViewOfFile(hMapFile, FILE_MAP_READ, 0, 0, 0); ・・・・・・・・
98 名前:デフォルトの名無しさん [2005/10/29(土) 17:05:16 ] Public Declare Function Connect Lib "cmbmprj" () As Double Public Declare Function isConnected Lib "cmbmprj" () As Boolean Public Declare Sub DisConnect Lib "cmbmprj" () Public Declare Function getNbSensorvbType Lib "cmbmprj" (ByVal n_sensor As Integer) As Integer 以下はTsensortypeの型定義の仕方が不明だから、標準モジュールで止めたファンクション定義 'Public Declare Function getNbSensor Lib "cmbmprj" (Tsensortype As SensorType) As Integer 'Public Declare Function getSensorType Lib "cmbmprj" (n_sensor As integer) As Tsensortype 以下のboolean Bcnctは ローカルウィンドウで、"True"に表示される。 cmbmprj.dllの,bool CMBM::isConnected()のリターンコードがTrueで戻ってくるというのは 既に、dllが参照された時点で、CMBM::CMBM()とdouble CMBM::Connect()が参照され、それによって bool CMBM::ReadValues()も参照されていると判断される。 Dim iret As Integer Dim wcnct As Double Dim Bcnct As Boolean Bcnct = isConnected() '戻り値は Trueが確認されている If Bcnct = False Then wcnct = Connect() If wcnct = -1 Then ・・・・・ ElseIf wcnct = -2 Then ・・・・ Else ・・・・ End If Else iret = getNbSensorvbType(1) 'vb 側としてはここでエラー発生 Form1.List1.AddItem "温度センサーの登録数:" & Str(iret) & " " & TTIME End If
99 名前:デフォルトの名無しさん [2005/10/29(土) 17:11:19 ] CMBM::CMBM() { data = NULL; Connected = false; Connect(); } //--------------------------------------------------------------------------- CMBM::~CMBM() { DisConnect(); } //--------------------------------------------------------------------------- bool CMBM::ReadValues() { data = (TSharedData *)MapViewOfFile(hMapFile, FILE_MAP_READ, 0, 0, 0); if (data == NULL) { Connected = false; return Connected; } return true; }
100 名前:デフォルトの名無しさん mailto:sage [2005/10/29(土) 17:11:43 ] スマナイけど、俺たちは仕事をする為にこのスレに来てるわけじゃないし、ましてやタダ働きする為に来てるんでもない。 なにか面白い書き込みを楽しみに来てるわけで。 細かい具体的内容書かれれば書かれる程、ゲンナリしちゃうわけ。 質問は結構だけど、もう少し整理してくれ。 理解出来ないから丸投げじゃ、面白くもなんともないよ