Vol.838 4.Feb.2022

PICのADデータをUSB通信 白文字で印刷したい Windows10のライセンス認証がされない

P PICのADデータをUSB通信 〜A/D変換とスイッチ入力

by fjk

 PICのAD変換機能を利用し、アナログ入力データ(0〜5V[1023])を計測し、USB機能を利用してパソコンに送信した。なお、RC3にDIPスイッチSWC3も追加し、AD変換(送信)を「HOLD/AD変換実施」をスイッチを押すたびに切り替えるようにした(スイッチのチャタリング対策はしていない)。

@ PICはVRの電圧をADコンバータで変換している。
A AD変換モードがONの場合、約1秒おきにパソコンにUSB通信で送る。
B パソコンは受け取ったデータをターミナルソフトで画面に表示。
C スイッチを押すと、HOLD/AD_ONを切替、そのモードをパソコンに送る。
D ターミナルソフトで入力(エコー無し)したデータをPICに送る。
E PICで受信したデータと文字数をパソコンに返し、ターミナル画面に表示する。
 
※ターミナルソフトとしてテラタームなどを使う場合、返信処理が1文字毎に行われるので、エコーバック部分の修正が必要です。

 なお、割込はUSB、Timer2で使用(Timer2のCallback関数に追加記述が必要)。AD入力はRA4ピンだが、チャンネルはAN3で”3”なので注意!。LEDはRA5.を使用。USB関係はabc837のままなのでabc837を参照。TimerおよびAD変換の設定はabc764と同じなので詳細はabc764を参照。

テスト回路(PIC16F1455) MCC画面(AD3=RA4、
LED=RA5、SWC3=RC3)
ADC(channel3)設定
(TAD=23uS)
タイマー(2)設定
(割込は約1秒毎)

/*----- main.c ------*/
#include <stdio.h>
#include <string.h>
#include "mcc_generated_files/mcc.h"

#define  BFSIZE 32

	char NEWLINE[] = "\r\n";

static	uint8_t rBuf[BFSIZE];
static	uint8_t wBuf[BFSIZE];

	uint8_t tmFlg;

void SendUSB_char(uint8_t c){
	do
		CDCTxService();
	while (!USBUSARTIsTxTrfReady());
	putUSBUSART((uint8_t *)&c, 1);
	CDCTxService();
}

void SendUSB_str(uint8_t *str){
	do
		CDCTxService();
	while (!USBUSARTIsTxTrfReady());
	putsUSBUSART((uint8_t *)str);
	CDCTxService();
}

void SendUSB_int(int val){
	uint8_t iBuf[10];
	sprintf(iBuf,"%d: ",val);
	SendUSB_str(iBuf);
}

void main(void){
	SYSTEM_Initialize();			// initialize the device
	INTERRUPT_GlobalInterruptEnable();	// Enable the Global Interrupts
	INTERRUPT_PeripheralInterruptEnable();	// Enable the Peripheral Interrupts

	int swFlg = 0;
	int adFlg = 0;
	int num, aVal, i;

	while (1 ) {
		num = getsUSBUSART(rBuf,sizeof(rBuf));
		if(num > 0) {
			for(i=0; i < num; i++) {
				switch (rBuf[i])  {
					case 0x0A:
					case 0x0D:
						wBuf[i] = 0x00;
						break;
					default:
						wBuf[i] = rBuf[i];
						break;
				}
			}
	 		SendUSB_str("PIC> ");
			SendUSB_int(num);
			SendUSB_str(wBuf);
	 		SendUSB_str(NEWLINE);
			if(( wBuf[0] & 0x01) == 0)
				LED_SetLow();
			else
				LED_SetHigh();
		}
		if((SWC3_GetValue() == 0) & (swFlg == 0)){
			swFlg = 1;
			if(adFlg == 0){
				SendUSB_str("AD Start");
				SendUSB_str(NEWLINE);
				adFlg = 1;
			}else{
				SendUSB_str("AD Hold");
				SendUSB_str(NEWLINE);
		 		adFlg = 0;
			}
		}else if((SWC3_GetValue() > 0) & (swFlg == 1)){
			swFlg = 0;
		}
		aVal=ADC_GetConversion(3);
		if((tmFlg > 0) & (adFlg > 0)){
			SendUSB_str("ADC> ");
			SendUSB_int(aVal);
			SendUSB_str(NEWLINE);
			tmFlg = 0;
		}
    	} 
}


 

/*----- Timer2.c ----*/

extern uint8_t tmFlg;

void TMR2_CallBack(void)
{
	// Add your custom callback code here
	tmFlg = 1;

	// this code executes every TMR2_INTERRUPT_TICKER_FACTOR periods of TMR2
	if(TMR2_InterruptHandler)
	{
		TMR2_InterruptHandler();
	}
}

通信テスト用PIC回路 ターミナル画面表示例


W 白文字で印刷したい

by fjk

 カラー紙や透明フイルム、デカール等に印刷する場合、白文字を使いたい時がある。以前、白文字を印刷できる、マイクロドライプリンタMD5500(ALPS)があったが、今は入手困難である。そこで、現在、利用できそうな白文字印刷プリンタについて調べてみると、以下の情報が見つかった。

1.熱転写方式
テプラやNAMELANDのように熱転写式プリンタがあるが、テープで色の組み合わせも限られる。
2.白トナー方式
専用レーザープリンタ(FUJIFILMのCP310st)とホワイトカートリッジ(黒、金、銀と組合わせ可能)で印刷できるが、高価(本体35万円)。
布転写用だが、紙にも印刷出来るプリンタ+トナー(RGBW)がクイックアートで取扱。しかし、現在半導体不足で入荷未定。
3.インクジェット方式
Epsonの大判プリンタSC-S80650(10色、ロール紙)は、インクカートリッジで「ホワイトインク」(エコソルベントインク)が使用できるが、やはり高価(本体220万円)。

 白文字を印刷ができるプリンタもあるが、業務用として高価で、一般家庭向けではない。ライトグレーインクでカバーできるなら、エプソンの SC-PX1V(A3ノビ、10色、10万円以下)。
 白インクは下地が透けやすいのでトナーの方が良さそうですが、エプソンには開発済みのインクジェット用の「ホワイトインク」があるのだから、一般家庭用に使える形(安価)で販売してもらえると良いのだが・・。


W Windows10のライセンス認証がされない

by fjk

 Windows8.1からWindows10に無償アップしたマシンを使っていたところ、OSのupdate後「Windowsはライセンス認証されていません」とメッセージが表示された(今まで認証されていたのですが・・)。
 Windows10でライセンス認証をせずに使用を続けると、以下の制限を受ける。

@ パソコンの画面右下に「Windowsのライセンス認証を行ってください」という透かしが表示される
A 壁紙やロック画面、テーマなどの変更ができなくなる
B OSの更新やアップデートの一部が受けられなくなる
C その他OSに関する機能やサービスの一部

そして、Windows10の猶予期間は、インストールしてから30日間ですが、Windows10ではOSを使えなくなるような厳しい制限はなくなった。

 通常は、一度ライセンス認証を行えば、再度認証を要求されることはありませんが、

@ パソコンを初期化する
A 中古で非正規品のWindowsパソコンを購入する
B ハードディスクなど、パソコンのパーツを交換する

などが行われた場合には、再度ライセンス認証が要求される場合がある。

 そういえば、問題のパソコンは、雷でマザーボードが壊れて交換し、上記のBの場合に該当する。

 とりあえず、対処方法がよく判らないので、「Windows の製品ライセンス認証 」オンライン サポートの電話番号」サービスを利用することにした。

(1)「電話によるライセンス認証」オプションを設定している場合
@ [スタート] > [設定] > [更新とセキュリティ] > [ライセンス認証] の順に選択。
A [Windows を今すぐライセンス認証する] セクションで、[電話によるライセンス認証] を選択。
B ドロップダウン リストから場所 (または最も近い場所) を選択し、[次へ] を選択。
D 一覧で表示される日本の電話番号(0120-801-734)に電話をかけると、自動電話システムにより、ライセンス認証プロセスを順に案内される(または03-6831-3460[有料])。
D ライセンス認証が正常に完了しない場合は、しばらくするとMicrosoft サポートに接続される。
 
(2)[電話によるライセンス認証] オプションを設定していない場合
@ Windows ロゴ キー + R キーを押し、[開く] ボックスで slui 4 と入力し、[OK] を選択。
A ドロップダウン リストから場所 (または最も近い場所) を選択し、[次へ] を選択。
B 一覧に表示される日本の電話番号(0120-801-734)に電話をかけると、 自動電話システムにより、ライセンス認証プロセスを順に案内される(または03-6831-3460[有料])。
E ライセンス認証が正常に完了しない場合は、しばらくすると Microsoft サポートに接続される。

 電話口で、いくつかの質問にプッシュキーで応答し、しばらく待っていると、オペレータに接続され、症状を伝えた。画面に表示されているエラーコードを伝えると、上記の(2)["slui 4" の入力]を試みるように言われ、実行してみるが、アプリが起動しなかった。
 そこで、次に、[開く] ボックスで "slui 3" と入力するよう指示があり、すると「プロダクトキー」を入力する画面が表示され、Windows8.1のプロダクトキーを入力し、「認証する」を実行すると、[認証されました」と表示され。無事Windowsのライセンス認証が行えた。

※ライセンス認証の確認は、[ スタート/設定/更新とセキュリティ/ライセンス認証 ]で行える。


PICのADデータをUSB通信 白文字で印刷したい Windows10のライセンス認証がされない>