PCIスロットにポート0x80 BIOSポストデバッグカードを取り付けました。起動後にカードにCPU温度を表示するためにこれを意図的に使用したいと思います。アドレスは1バイトを占め、16進数で表されます。カードに書き込むために2桁の10進数の摂氏温度値を1バイトに変換する方法は?ディスプレイは16進数なので、バイト出力を10進数で読み取ることができるものに変換する必要があることに注意してください。しかし、この時点ではバイトを取得するだけで役に立ちます。インターネット検索が私を狂わせます。
たとえば、echo d | dd of=/dev/port bs=1 count=1 seek=128
文字dのASCIIバイトである64を表示します。
cat /sys/class/hwmon/hwmon0/temp2_input | cut -c1-2
CPU温度を℃単位でASCII 2バイトで提供します。58
bashコマンド文字列はcronジョブまたはシステムタイマーを介して呼び出すことができるので、より良いです。
ありがとうございます! ! !
答え1
10進値で示された温度読み値を、温度読み値と同じように表示される16進値に対応する文字に変換しようとしています。
printf
この要求は、指定された文字コードに対応する文字を印刷するために使用できるよりも複雑に見えます。
$ printf "\x64\n"
d
だからあなたが望む結果を得ることができます。
printf "\x$(cut -c1-2 < /sys/class/hwmon/hwmon0/temp2_input)" | dd of=/dev/port bs=1 count=1 seek=128