• 締切済み

radikaが聴けません windowsXPです

パソコンでradikaを使っていたのですが 先日より急に聴けなくなっています。 番組表やメインウィンドウなどは普通に表示されます。聴こうとして番組をクリックすると〔予期しない例外が発生しました。詳しくは[err.log」を参照してください。保護されているメモリに読み取りまたは書き込み操作を行おうとしました。他のメモリが壊れていることが考えられます。〕と、でてきて そこから先は進めなくなります。 もちろん私はerr.logとやらを見てもサッパリわかりません。err.logを添付してみます。どなたかお解かりのかたいらっしゃったら助言頂けたら幸いです。  2012/02/25 0:10:09:radikaβ Ver.1.63.0.0 予期しない例外が発生しました。 詳しくは「err.log」を参照してください。 System.AccessViolationException: 保護されているメモリに読み取りまたは書き込み操作を行おうとしました。他のメモリが壊れていることが考えられます。 場所 Microsoft.DirectX.DirectSound.SecondaryBuffer.SetEffects(EffectDescription[] dsEff) 場所 NyankoDaisuki.Sound.DSoundOutputStream.Initialize(String driverGuid) 場所 NyankoDaisuki.Sound.DSoundOutputStream..ctor(String driverGuid, Int32 samplesPerSecond, Int16 bit, Int16 channel, Int32 bufferMilliSecond) 場所 radika.RadikaPlayingTask.MyAutoCreateDSoundStream.CreateSoundOutputStreamCore(Int32 samplerate, Int16 bit, Int16 channels, Int32 bufferMilliSeconds) 場所 NyankoDaisuki.Sound.AutoCreateDSoundStream.CreateSoundOutputStream(Int32 samplerate, Int16 bit, Int16 channels) 場所 NyankoDaisuki.Sound.AutoCreateDSoundStream.OnNotifyFormat(Int32 samp, Int16 ch, Int16 bit) 場所 NyankoDaisuki.Sound.BaseAudioConvertStream.InitializeFormat(Int32 samp, Int16 ch, Int16 bit) 場所 radika.BaseAACAudioDecodeStream.InitDecoder(Byte[] buff, Int32& bytesconsumed) 場所 radika.BaseAACAudioDecodeStream.InitializeCore(Byte[] buff, Int32 offset, Int32 size) 場所 NyankoDaisuki.Sound.BaseAudioDecodeStream_HeaderBuffering.ConvertFunction(Byte[] buff, Int32 offset, Int32 size, Int32& convertSize, Boolean end) 場所 NyankoDaisuki.Sound.BaseAudioDecodeStream.Write(Byte[] buffer, Int32 offset, Int32 count) 場所 radika.AACAMF_To_ADTSAACWriter.WriteCore(Byte[] body, Int32 ch, UInt32 timestmp, RTMPPacketType packetType) 場所 radika.BaseAMFWriter.Write(AMFPacket packet) 場所 radika.RadikaTask.<>c__DisplayClass3.<Initialize>b__2() 場所 System.Threading.ThreadHelper.ThreadStart_Context(Object state) 場所 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 場所 System.Threading.ThreadHelper.ThreadStart()

  • 2kyun
  • お礼率100% (25/25)

みんなの回答

  • to4oka6ra
  • ベストアンサー率100% (4/4)
回答No.2

現在インストールされているのは別のフォルダにインストールすることで状況が変わったりしないですかね。

2kyun
質問者

お礼

ありがとうございます。そのフォルダ関係も自分なりにちょっとやってみましたが なにぶん無知なもんで状況を打破出来ません。

noname#171471
noname#171471
回答No.1

以前Ver1.60使用時に全く同じエラーが出ました。治し方がわからなかったのでradika最新版(当時1.62)をインストールし直したら治り、その後現在に至るまでそのエラーは発生していません。 ちなみに私のOSもXPです。

2kyun
質問者

お礼

ありがとうございます。私も削除と再ダウンロードを何度かやってみましたが やっぱりダメでした。ただ今朝録音だけ出来ました。再生はやっぱりダメです。

関連するQ&A

  • RadikaVer1.71による録音トラブル

    曜日予約録音をしていますが、ここ数回は ”予期しない例外が発生しました。 詳しくは「err.log」を参照してください。” が表示されます。今朝の「err.log」は、次のとおりです。 対処方法をご教授願います。 ----------------------------------------------------------------------------------- System.AccessViolationException: 保護されているメモリに読み取りまたは書き込み操作を行おうとしました。他のメモリが壊れていることが考えられます。 場所 radika.DynamicAACAudioDecoder.faacDecDecode_Delegate.Invoke(IntPtr hDecoder, Byte[] buffer, UInt32& bytesconsumed, Byte[] sample_buffer, UInt32& samples) 場所 radika.DynamicAACAudioDecoder.Decode(IntPtr decoder, Byte[] buff, Int32& bytesconsumed) 場所 radika.BaseAACAudioDecodeStream.ConvertCore(Byte[] buff, Int32 offset, Int32 size, Int32& convertSize, Boolean end) 場所 NyankoDaisuki.Sound.BaseAudioDecodeStream_HeaderBuffering.ConvertFunction(Byte[] buff, Int32 offset, Int32 size, Int32& convertSize, Boolean end) 場所 NyankoDaisuki.Sound.BaseAudioDecodeStream.Write(Byte[] buffer, Int32 offset, Int32 count) 場所 radika.AACAMF_To_ADTSAACWriter.WriteCore(Byte[] body, Int32 ch, UInt32 timestmp, RTMPPacketType packetType) 場所 radika.BaseAMFWriter.Write(AMFPacket packet) 場所 radika.RadikaTask.<>c__DisplayClassb.<Initialize>b__a() 場所 System.Threading.ThreadHelper.ThreadStart_Context(Object state) 場所 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 場所 System.Threading.ThreadHelper.ThreadStart()

  • Radikaで録音エラー

    インタネットで聴けるラジオ「radiko」を録音したいと思い、いろいろ調べて 「Radika」というフリーソフトにたどり着きました。 1度は思うように録音できたのですが、 2度目から、エラーが出て録音できなくなってしまいました。 詳しい方、エラー解除の方法を教えていただけないでしょうか? また、exeファイルをダブルクリックして起動しても、画面が見えないことがあります。 「タスクマネージャー」の「プロセス」では実行中なので、 起動はしているようなのですが、画面が見えないため録画設定ができません。 この場合は、再度インストールしなおしています。 当方、初心者ですので、できるだけ手順など詳しく教えていただければと思います。 ・使用しているソフト、バージョン RadikaVer1-71 ・使用しているPC Windows 7 Home Premium (64ビットオペレーションシステム) ・エラーが出た状況 「Radika」をセットし、PCをそのまま置いあをておいた。 PCは、15分ぐらいで画面が黒くなる設定(スリープ?)になっています。 2時間番組を録画予約していて、終わった時間には黒い画面になっていたので、 マウスを動かした、または電源ボタンを押して起こし、ログイン画面はなく、 「Radika」画面をみると、「終了しました」のメッセージがでていた。 録音したファイルが保存されるフォルダには録音ファイルはなく、 err.logがあった。 ・エラーログ =========================== radika.TunerDeviceException: キーを取得できませんでした。 場所 radika.RadikoTunerDevice.RadikoClientCreater`1.GetAuthKey(RadikaApp app, String id, String host, String playerURL, Int32 timeoutSeconds, ManualResetEvent stop, Boolean showChildProcessWindow, String userAgent) 場所 radika.RadikoTunerDevice.RadikoClientCreater`1.CreateReader(RadikaApp app, AMFAudioSharedClient share, StreamType streamType, String id, String host, String playerURL, Int32 timeoutSeconds, Int32 priority, PriorityMode priorityMode, Boolean sharedConnection, ManualResetEvent stop, Boolean showChildProcessWindow, String userAgent) 場所 radika.RadikoTunerDevice.CreateReader[T](AMFAudioSharedClient share, StreamType radikocap, String id, String host, String playerURL, Int32 priority, PriorityMode priorityMode) 場所 radika.RadikoTunerDevice.CreateReaderCore(Int32 priority, PriorityMode priorityMode) 場所 radika.BaseNetworkTunerDevice.CreateReader(Int32 priority, PriorityMode priorityMode) 場所 radika.BaseTunerDevice.Create(Int32 priority, PriorityMode priorityMode, BasePCMStream pcmStream, IAMFReader& reader, IAMFWriterPlugin& writer) 場所 radika.RadikaTask.<>c__DisplayClassb.<Initialize>b__a() ========================= 長々とすみません。 よろしくお願いします。

  • radikaのタイマー録音

    radikaでタイマー録音していますが、時々失敗します。今朝も次のようなエラーが発生しました。 エラーは、「タイムアウト」と「対象のコンピュータによって拒否されたため、接続できませんでした。」「内部例外スタック トレースの終わり」です。 チューナーの設定は 1行目 ラジコ(フック) 2行目 サイマルラジオ 3行目 ラジコ 4行目 NHKサイマル 5行目 NHKサイマル(SmartPhone) 6行目 NHKサイマル(RTSP) 7行目 NHKサイマル(フック) になっています。 対処方法をご教授願います。 ●err.log 2012/12/07 5:25:48:radikaβ Ver.1.68.0.0 radika.AMFReaderException: エラーが発生しました。System.Exception: タイムアウトしました。 場所 radika.Program.WaveCapture(String uri, String pipe, Boolean invisible, Int32 timeout) 場所 radika.RMTPAudioSharedClient2.RMTPAudioSharedReader.ReadPacket() 場所 radika.BaseTunerDevice.MyAMFReader.ReadPacket() 場所 radika.RadikaTask.<>c__DisplayClass7.<Initialize>b__6() 2012/12/07 5:26:54:radikaβ Ver.1.68.0.0 radika.AMFReaderException: エラーが発生しました。System.Exception: タイムアウトしました。 場所 radika.Program.WaveCapture(String uri, String pipe, Boolean invisible, Int32 timeout) 場所 radika.RMTPAudioSharedClient2.RMTPAudioSharedReader.ReadPacket() 場所 radika.BaseTunerDevice.MyAMFReader.ReadPacket() 場所 radika.RadikaTask.<>c__DisplayClass7.<Initialize>b__6() 2012/12/07 5:27:01:radikaβ Ver.1.68.0.0 radika.TunerDeviceException: 対象のコンピュータによって拒否されたため、接続できませんでした。 219.103.34.224:1935 ---> radika.AMFReaderException: 対象のコンピュータによって拒否されたため、接続できませんでした。 219.103.34.224:1935 ---> System.Net.Sockets.SocketException: 対象のコンピュータによって拒否されたため、接続できませんでした。 219.103.34.224:1935 場所 System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress) 場所 System.Net.Sockets.Socket.Connect(EndPoint remoteEP) 場所 System.Net.Sockets.TcpClient.Connect(IPEndPoint remoteEP) 場所 radika.BaseRMTPClient.OpenConnectSocket() --- 内部例外スタック トレースの終わり --- 場所 radika.BaseRMTPClient.OpenConnectSocket() 以下略

  • String(byte[] bytes, int offset, int length)の文字コードは?

    String(byte[] bytes, int offset, int length)は、バイト配列(8bitずつのまとまり)を、文字列型に直す、というものだと思うのですが文字コードは何にしたがって直すのでしょうか? http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/java/lang/String.html

    • ベストアンサー
    • Java
  • bmpファイルの画像データ表示

    C言語で24bit Windowsbitmapの画像データ部を読み込んで10進数でダンプするプログラムを書きましたが000…と表示されます. バイナリファイルの扱いは初めてなので勘違いを多々しているとおもいます.ご指導,ご指摘宜しくお願いします. =======ソース=========================== #include<stdio.h> #include<stdlib.h> int main(int argc,char *argv[]){ FILE *fp; char buff[40]; char buffData[2560]; size_t size = 1; size_t n = 40; int biSize; int biBitCount; int biCompression; int biWidth; int biHeight; int bfSize; int bfOffBits; int lineByte; int i; int position; int line; if( argc != 2){ printf("Run this way !! %s [bit map image] \n",argv[0]); return 0; } fp = fopen(argv[1],"rb"); if(fp == NULL){ printf("%s No such file or directory !!\n",argv[1]); return 0; } /********************************* * check header infomation * *********************************/ // check input file type fread(buff,size,n,fp); if('B' != buff[0] || 'M' != buff[1]){ printf("## Warning ## %s is not bit map file !!\n",argv[1]); return 0; } // check bitmap type biSize = *(int*)(buff + 14); if( biSize != 40){ printf("%s isn`t Windows bitmap !!\n",argv[1]); return 0; } // check the size(bit) of 1 pixel biBitCount = *(int*)(buff + 28); if(biBitCount != 24){ printf("%s isn't 24bit Windows bitmap !!\n",argv[1]); return 0; } // check the type of compression biCompression = *(int*)(buff + 30); if(biCompression != 0){ printf("%s is compressed Windows bitmap !!",argv[1]); return 0; } // check the width of image (pixel) biWidth = *(int*)(buff + 18); //printf("Width : %d\n",biWidth); // check the height of image (pixel) biHeight = *(int*)(buff + 22); //printf("Height : %d\n",biHeight); // check the file size bfSize = *(int*)(buff + 2); // check the offset to image data bfOffBits = *(int*)(buff + 10); /************************************ * reading image data * ************************************/ // the size of one line lineByte = (biWidth * biBitCount) / 8; printf("LineByte = %d\n",lineByte); for(i=0;i < biHeight ;i++){ position = bfOffBits + lineByte * (biHeight - (i + 1)); fseek(fp,position,SEEK_SET); fread(buffData,line,1,fp); printf("%d\n",*(int*)buffData); } fclose(fp); return 0; } ========================================

  • 起動するとクラッシュします。

    InPixio Photo Focus Crash Report ---------------- Internal Name: PhotoFocus.exe Version: 3.7.6646.26812 (32-bit) Built: 平成30年3月13日 13:53:45 GMT Date: 令和2年1月2日 9:32:06 GMT OS Version: Microsoft Windows NT 10.0.18363.0 (64-bit) OS Friendly Version: Microsoft Windows 10 Pro Processor Name: Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz Processor Count: 12 Working Set: 82825216 Managed Memory Consumption: 5001344 Total Phys: 16977260544 Total Virtual: 4294836224 Available Phys: 8448094208 Available Virtual: 3858026496 Current UI Culture: ja-JP Current Culture: ja-JP Exception Type: System.ArgumentOutOfRangeException Exception Message: 指定された引数は、有効な値の範囲内にありません。 パラメーター名:時間値が年号の範囲を超えています。 Exception Stack Trace: 場所 System.Globalization.GregorianCalendarHelper.GetEra(DateTime time) 場所 System.Globalization.JapaneseCalendar.GetEra(DateTime time) 場所 System.DateTimeFormat.FormatCustomized(DateTime dateTime, String format, DateTimeFormatInfo dtfi, TimeSpan offset) 場所 System.DateTimeFormat.Format(DateTime dateTime, String format, DateTimeFormatInfo dtfi, TimeSpan offset) 場所 System.DateTimeFormat.Format(DateTime dateTime, String format, DateTimeFormatInfo dtfi) 場所 System.DateTime.ToShortDateString() 場所 InPixio.Imaging.ThumbnailHelper.LoadThumbnailAndInfo(String path, Int32 minLongEdge, Int32 maxLongEdge, String& info) 場所 InPixio.Imaging.ThumbnailHelper.LoadThumbnailAndInfo(String path, Int32 longEdge, Dictionary`2 Metadata) 場所 OneFix.ViewModels.SampleItem..ctor(String path) 場所 OneFix.ViewModels.PhotoFocusShellViewModel..ctor() 場所 OneFix.App.App_Startup(Object sender, StartupEventArgs e) 場所 System.Windows.Application.OnStartup(StartupEventArgs e) 場所 System.Windows.Application.<.ctor>b__1_0(Object unused) 場所 System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs) 場所 System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler) ※OKWAVEより補足:「ソースネクスト株式会社の製品・サービス」についての質問です。

  • シリアル通信でのデータ受信

    シリアル通信にてデータを連続的に受信するプログラムを つくりたいと思っています. 以下のプログラムを作成して, main関数のcountを増やして,繰り返しreadを行おうとすると, 出力結果として, 時,分,秒,ID,値B,値C,値Dというフォーマットで 0, 9,30, 1,514,708,542,290 0, 9,30, 2,515,707,542,288 0, 9,30, 3,514,709,542,287 0, 9,30, 4,514,707,543,289 0, 9,30, 5,514,708,542,289 0, 9,30, 6,514,708,542,292 0, 9,30, 7,514,708,542,291 0, 9,30, 8,514,708,542,289 0, 9,30, 9,514,708,543, 0, 9,39,35,514,708,542,289 (この後フが連続) フフフフフフフフフフフフフフフ ク 0, 9,39,36,514,708,542,290 0, 9,39,37,515,709,541,291 0, 9,39,38,514,707,542,286 0, 9,39,39,514,708,542,281 0, 9,39,40,514,708,542,284 0, 9,39,41,514,707,542,286 0, 9,39,42,514,707,542,290 0, 9,39,43,514,709,542,290 0, 9,30, 9,514,708,543, 0, 9,39,35,514,708,542,289 フフフフフフフフフ・・・再びフ となってしまいます. 問題としては ・フがたくさんでてきてしまう. ・1サイクルの最後で改行ができていない ・1サイクルが終わって次のサイクルに入る時までの 間にデータが失われている. ・2サイクル目になぜか1サイクル目の値が残っている? などがあります. どなたか解決方法を教えていただけると大変助かります. よろしくお願いします. ------------------------------- #include "stdafx.h" #include <stdlib.h> #include <windows.h> #include <string.h> #include <stdio.h> #define COM_PORT_NAME "COM2" #define BAUD_RATE 57600 #define BYTE_SIZE 5000 //250 #define PARITY NOPARITY //EVENPARITY #define STOP_BIT TRUE #define F_PARITY ONESTOPBIT HANDLE hComm; // シリアルポートとの通信ハンドル bool ComInit() { // シリアルポートを開ける hComm = CreateFile( COM_PORT_NAME, /* シリアルポートの文字列 */ GENERIC_READ | GENERIC_WRITE, /* アクセスモード:読み書き */ 0, /* 共有モード:他からはアクセス不可 */ NULL, /* セキュリティ属性:ハンドル継承せず */ OPEN_EXISTING, /* 作成フラグ: */ FILE_ATTRIBUTE_NORMAL, /* 属性: */ NULL /* テンプレートのハンドル: */ ); if (hComm == INVALID_HANDLE_VALUE) { printf("シリアルポートを開くことが出来ませんでした。\n"); return false; } // 通信属性を設定する DCB dcb; GetCommState(hComm, &dcb); /* DCB を取得 */ dcb.BaudRate = BAUD_RATE; dcb.ByteSize = BYTE_SIZE; dcb.Parity = PARITY; dcb.fParity = STOP_BIT; dcb.StopBits = F_PARITY; SetCommState(hComm, &dcb); /* DCB を設定 */ return true; } void ComEnd() { // ハンドルを閉じる CloseHandle(hComm); } bool ReadData(char *buff, unsigned int max_size) { DWORD dwErrors; /* エラー情報 */ COMSTAT ComStat; /* デバイスの状態 */ DWORD dwCount; /* 受信データのバイト数 */ DWORD dwRead; /* ポートから読み出したバイト数 */ ClearCommError(hComm, &dwErrors, &ComStat); dwCount = ComStat.cbInQue; FILE *fid; fid=fopen("test.txt", "w"); printf("%d %d\n", dwCount, max_size); fprintf(fid,"%d %d\n", dwCount, max_size); fclose(fid); if (dwCount > max_size) { printf("バッファサイズが足りません。\n"); return false; } if(hComm != NULL){ ReadFile(hComm, buff, dwCount, &dwRead, NULL); if (dwCount != dwRead) { printf("データの受け取りに失敗しました。\n"); return false; } } return dwRead; } int main(int argc, char* argv[]) { char buff[BYTE_SIZE]; int count = 0; int data_length; FILE *fid2; fid2=fopen("test2.txt","w"); ComInit(); while(1){ if(count == 2) break; count++; data_length=ReadData(buff, strlen(buff)); printf("%s ",buff); fprintf(fid2, "%s ",buff); } fclose(fid2); ComEnd(); return 0; }

  • poderosaが起動できない

    オブジェクト参照がオブジェクト インスタンスに設定されていません。 というエラーがでます。 =========================================================== 2010/11/30 13:41:45 確立された接続がホスト コンピューターのソウトウェアによって中止されました。 場所 System.Windows.Forms.Control.MarshaledInvoke(Control caller, Delegate method, Object[] args, Boolean synchronous) 場所 System.Windows.Forms.Control.Invoke(Delegate method, Object[] args) 場所 Poderosa.Sessions.TerminalSession.CloseByReceptionThread(String msg) 場所 C:\P4\src\TerminalSession\TerminalSession.cs:行 137 場所 Poderosa.Terminal.AbstractTerminal.Cleanup(String msg) 場所 C:\P4\src\TerminalEmulator\TerminalBase.cs:行 393 場所 Poderosa.Terminal.AbstractTerminal.OnAbnormalTermination(String msg) 場所 C:\P4\src\TerminalEmulator\TerminalBase.cs:行 362 場所 Poderosa.Protocols.SSHConnectionEventReceiverBase.OnAbnormalTerminationCore(String msg) 場所 C:\P4\src\Protocols\SSHSocket.cs:行 105 2010/11/30 13:44:49 確立された接続がホスト コンピューターのソウトウェアによって中止されました。 場所 System.Net.Sockets.Socket.Send(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags) 場所 Granados.IO.PlainSocket.Write(Byte[] data, Int32 offset, Int32 length) 場所 C:\P4\src\granados\Socket.cs:行 307 場所 Granados.SSH2.SSH2Connection.TransmitPacket(SSH2DataWriter payload) 場所 C:\P4\src\granados\SSH2Connection.cs:行 383 場所 Granados.SSH2.SSH2Channel.TransmitPacket(SSH2DataWriter writer) 場所 C:\P4\src\granados\SSH2Connection.cs:行 781 場所 Granados.SSH2.SSH2Channel.Close() 場所 C:\P4\src\granados\SSH2Connection.cs:行 651 場所 Poderosa.Protocols.SSHSocket.CleanupErrorStatus() 場所 C:\P4\src\Protocols\SSHSocket.cs:行 164 場所 Poderosa.Protocols.SSHConnectionEventReceiverBase.CloseError(Exception ex) 場所 C:\P4\src\Protocols\SSHSocket.cs:行 121 =============================================================================

  • Visual c# スレッド

    プログラム初心者です。 Visual c#にてスレッド関数を使ったプログラムを見よう見まねで 作りました。 スタートボタンを押すとピクチャーボックスの位置が 左から右へ移動し、ストップボタンを押すと止まる。 ピクチャーボックスの位置をテキストボックスに表示する。 というプログラムのつもりです。 デバックの状態でスタートボタンを押すとエラーメッセージが出て テキストボックスに位置を書き込むの関数のところが緑色にハイライトされます。エラーの内容は「有効でないスレッド間の操作」とありますが、どうしたら良いのか分かりません。 エラーの直し方を教えてください。 プログラムコードは以下です。 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Threading; namespace bit_map_08._1._ { public partial class Form1 : Form { private Thread thread; static private int Position = 0; static private int i; static bool BtnOnFig; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { thread = new System.Threading.Thread(newSystem.Threading.ThreadStart(MainThread)); thread.Start(); } private void PointMove() { if (i < 300) { i = i + 1; Position = Position + i; textBox1.Text = Convert.ToString(Position); pictureBox1.Left = (Position); } if (i == 300) { i = 0; } } private void MainThread() { while( true ) { Thread.Sleep(100); if (BtnOnFig == true) { PointMove(); } } } private void button1_Click(object sender, EventArgs e) { BtnOnFig = true; } private void button2_Click(object sender, EventArgs e) { BtnOnFig = false; } } }

  • USART通信で文字化け

    __CONFIG( WDTDIS & UNPROTECT & BORDIS & MCLRDIS & PWRTEN & HS & LVPDIS ); // // test.c 2009/07/30 HI-TECH C Compiler // プリスケーラ1/256 セラミック発振子10MHz使用 1命令当り102us // unsigned char buff[10]; unsigned int RecCnt=0; main(){ /*Port initalizeなど .................... */ RCSTA = 0x90; TXSTA = 0x24; SPBRG = 0x40; //BaudRate 9600 FOCS 10MHz unsigned int i; while(1){ putch('A'); for(i=0; i<60000; i++); putch('K'); for(i=0; i<60000; i++); } } ヘッダーファイル #ifndef _SERIAL_H_ #define _SERIAL_H_ #define BAUD 9600 #define FOSC 10000000L #define NINE 0 // Use 9bit communication? FALSE=8bit #define DIVIDER ((int)(FOSC/(16UL * BAUD) -1)) #define HIGH_SPEED 1 #if HIGH_SPEED == 1 #define SPEED 0x04 #else #define SPEED 0 #endif #define RX_PIN TRISB1 #define TX_PIN TRISB2 /* Serial initialization */ #define init_comms()\ RX_PIN = 1; \ TX_PIN = 1; \ SPBRG = DIVIDER; \ RCSTA = (NINE_BITS|0x90); \ TXSTA = (SPEED|NINE_BITS|0x20) void putch(unsigned char); unsigned char getch(void); unsigned char getche(void); #endif void putch(unsigned char byte) { unsigned int i; /* output one byte */ while(!TXIF) /* set when register is empty */ continue; TXREG = byte; } unsigned char getch() { /* retrieve one byte */ while(!RCIF) /* set when register is not empty */ continue; return RCREG; } 上記が自分で作成したUSART通信を使用したプログラムです。AとKを送信しています。ですがハイパーターミナルで受信した文字列を見てみるとまったく異なる文字や空白など文字化けをしていました。 前に作成した時は正常に表示されたのですが、今また流用してみると文字化けしていました。 発振子に10MHz使用でBRGH=1(高速)と9600bps→SPBRG=0x40 原因はここだと思うのですが、、、謎です。 丸投げな感じですが、どうか分かる方回答をお願いします。

専門家に質問してみよう