SC7703健康管理開発

同社は最近、健康のプロジェクト管理機能を開発しました。私たちは、UIインターフェイスの傍受のように一部だけをあまりにも多くの情報を明らかにすることはできません。7703でこの機能を達成するために。

 

I.概要需要

1、投薬リマインダ:

    モード薬(経口注射剤)、薬剤名、時間、量、繰り返し、着信音

2、健康データ:

1)血圧データ:高圧、低圧、心拍数、時間

2)血糖データ:濃度、条件(昼食,,,)、時間の前に、朝食前に断食。

3、思い出さ測定

時間設定の測定

 

第二に、初期のニーズ分析:

1、服薬リマインダー:時間指定リマインダは、目覚まし時計のように、目覚まし時計は、システムへのサービスにサインアップすることができるように。

2、健康データ:ユーザーは、データがリンクされたリストに保存され、その後、統一された文書に書かれているので、データのCRUDを記録する必要があるため。だから、CRUD後に限り、ユーザーがその上に記録ファイルを更新します

3、測定注意:また、同様のウェイクアップサービスは、システムアラームクロックサービスに登録します

 

第三に、機能実現

    1)薬のリマインダー:機能:MMIALM_Init、登録されたアラームサービスMMIALMSVC_RegService

    アラーム時刻を言及し5の合計、目覚まし時計は、直接ModifyEvent編集​​した後、リストインデックスを通じて対応するIDサービスをマップIコードでこのタイプの増加にアラームSMART_EVENT_DRUG_REMINDER、注意を払うの新しく追加されたタイプ、または他の意志ではない、ここで対応アラームクロックサービスを、変更するには目覚まし時計をサインアップしてください。あまりにも多くの具体的なリピートをしない、書くことができ、同様の参照アラームインターフェースの編集需要。

    これは、リピートモードあることを言及する価値があります。

LOCAL void MMI_HelathAideSetMode(uint16 cur_index)
{
    uint8 s_weeks_selected[ALM_MODE_WEEK_NUM] = {MASK_B0, MASK_B1, MASK_B2, MASK_B3, MASK_B4, MASK_B5, MASK_B6};
    if((s_current_event_info.event.event_fast_info.fre >> cur_index) & 0x1)
    {
        
        s_current_event_info.event.event_fast_info.fre &= (~(1 << cur_index));
     }else
     {
            s_current_event_info.event.event_fast_info.fre |=  (s_weeks_selected[cur_index] & 0xFF);
     }
}

    数日選択したプランを保存するには7つのuint8のデータとの週

2)健康データ

    ①健康データの初期化ファイル

    ②ファイル、リンクリストに格納されたリードデータを読みます    

s_file_handle = MMIAPIFMM_CreateFile(pressure_full_path_name, SFS_MODE_READ|SFS_MODE_OPEN_EXISTING, NULL, NULL);
         if(SFS_INVALID_HANDLE != s_file_handle)
            {   //打开文件成功,开始读取文件
               
                while(1)
                {
                        node_data = (MMI_HELATH_AIDE_LOGNNDATA_PRESSURE  *)malloc(sizeof(MMI_HELATH_AIDE_LOGNNDATA_PRESSURE));
                            
                        if(PNULL != node_data)
                        {
                            memset(node_data, 0, sizeof(MMI_HELATH_AIDE_LOGNNDATA_PRESSURE));
                             file_ret =  MMIAPIFMM_ReadFile(
                            s_file_handle, 
                            (void *)node_data, 
                            sizeof(MMI_HELATH_AIDE_LOGNNDATA_PRESSURE), 
                            &read_size, 
                            NULL
                            );
                        }
                        
                        if((SFS_ERROR_NONE != file_ret) || (read_size <= 0)) //读取失败
                        {
                            //SCI_Free(node_data);
                            //MMIPUB_OpenAlertWarningWin(TXT_DRUG_READ_FILE_ERROR);
                            break;
                        }

                       

                        //分批次读取,每次读一个数据块,然后插入到链表中,不过这样的读取速度比较慢,在记录文件庞大的时候会变得缓慢

                        MMIHEALTH_InsertNode(s_pressure_list, node_data);


                        pressure_loging_num ++;
                        
                }
                MMIAPIFMM_CloseFile(file_handle);
            }

    ファイルを変更③

    リストに対応する空間ノードによってインデックスリストを相殺するために、現在のデータ編集を取得し、編集します    

    完全な再書き込みにあなたが終了し、ファイルを編集した後

temp = s_pressure_list->next;

        for(; erg < index; erg ++)
        {
              temp = temp->next;
              if((PNULL == temp) && (erg  !=  index))
                return PNULL;
        }

        return temp;

    ファイルを読み書きするとき、2つのエラーが頻繁に発生します

    1、SFS_ERROR_INVALID_PARAM

    エラーの原因は、例えば、あなたが読み取り用のファイルを開きたい場合は、渡されたMMIAPIFMM_CreateFile引数で、作成したファイルに間違ったパラメータを渡すことですSFS_MODE_WRITEです。そこには、新しいファイルで、SFS_MODE_CREATE_NEWを渡すとき、またはファイルを返すエラーコードを作成してください場合は、このパラメータをSFS_MODE_OPEN_EXISTING:SFS_ERROR_INVALID_PARAMは

    2、SFS_ERROR_ACCESS

    ファイルがクローズされていないため、エラーの原因があります。ファイル操作、malloc関数のメモリに忘れないでください、私たちはもちろん滞在する必要があります。自由になり、メモリのmallocの後、閉じて開いているファイル。

     あなたが複数回同じファイルを開くことができ、ハンドルが返されるたびに開いている数回、近いハンドルを言っていること、同じではありませんが、その後、削除操作は、エラー・コード6を返します。ファイルが占有されています。各開閉それを次のすべての前に

 

 

公開された22元の記事 ウォンの賞賛9 ビュー8836

おすすめ

転載: blog.csdn.net/ljm_c_bok/article/details/79940795