모바일 오유 바로가기
http://m.todayhumor.co.kr
분류 게시판
베스트
  • 베스트오브베스트
  • 베스트
  • 오늘의베스트
  • 유머
  • 유머자료
  • 유머글
  • 이야기
  • 자유
  • 고민
  • 연애
  • 결혼생활
  • 좋은글
  • 자랑
  • 공포
  • 멘붕
  • 사이다
  • 군대
  • 밀리터리
  • 미스터리
  • 술한잔
  • 오늘있잖아요
  • 투표인증
  • 새해
  • 이슈
  • 시사
  • 시사아카이브
  • 사회면
  • 사건사고
  • 생활
  • 패션
  • 패션착샷
  • 아동패션착샷
  • 뷰티
  • 인테리어
  • DIY
  • 요리
  • 커피&차
  • 육아
  • 법률
  • 동물
  • 지식
  • 취업정보
  • 식물
  • 다이어트
  • 의료
  • 영어
  • 맛집
  • 추천사이트
  • 해외직구
  • 취미
  • 사진
  • 사진강좌
  • 카메라
  • 만화
  • 애니메이션
  • 포니
  • 자전거
  • 자동차
  • 여행
  • 바이크
  • 민물낚시
  • 바다낚시
  • 장난감
  • 그림판
  • 학술
  • 경제
  • 역사
  • 예술
  • 과학
  • 철학
  • 심리학
  • 방송연예
  • 연예
  • 음악
  • 음악찾기
  • 악기
  • 음향기기
  • 영화
  • 다큐멘터리
  • 국내드라마
  • 해외드라마
  • 예능
  • 팟케스트
  • 방송프로그램
  • 무한도전
  • 더지니어스
  • 개그콘서트
  • 런닝맨
  • 나가수
  • 디지털
  • 컴퓨터
  • 프로그래머
  • IT
  • 안티바이러스
  • 애플
  • 안드로이드
  • 스마트폰
  • 윈도우폰
  • 심비안
  • 스포츠
  • 스포츠
  • 축구
  • 야구
  • 농구
  • 바둑
  • 야구팀
  • 삼성
  • 두산
  • NC
  • 넥센
  • 한화
  • SK
  • 기아
  • 롯데
  • LG
  • KT
  • 메이저리그
  • 일본프로야구리그
  • 게임1
  • 플래시게임
  • 게임토론방
  • 엑스박스
  • 플레이스테이션
  • 닌텐도
  • 모바일게임
  • 게임2
  • 던전앤파이터
  • 마비노기
  • 마비노기영웅전
  • 하스스톤
  • 히어로즈오브더스톰
  • gta5
  • 디아블로
  • 디아블로2
  • 피파온라인2
  • 피파온라인3
  • 워크래프트
  • 월드오브워크래프트
  • 밀리언아서
  • 월드오브탱크
  • 블레이드앤소울
  • 검은사막
  • 스타크래프트
  • 스타크래프트2
  • 베틀필드3
  • 마인크래프트
  • 데이즈
  • 문명
  • 서든어택
  • 테라
  • 아이온
  • 심시티5
  • 프리스타일풋볼
  • 스페셜포스
  • 사이퍼즈
  • 도타2
  • 메이플스토리1
  • 메이플스토리2
  • 오버워치
  • 오버워치그룹모집
  • 포켓몬고
  • 파이널판타지14
  • 배틀그라운드
  • 기타
  • 종교
  • 단어장
  • 자료창고
  • 운영
  • 공지사항
  • 오유운영
  • 게시판신청
  • 보류
  • 임시게시판
  • 메르스
  • 세월호
  • 원전사고
  • 2016리오올림픽
  • 2018평창올림픽
  • 코로나19
  • 2020도쿄올림픽
  • 게시판찾기
  • 게시물ID : programmer_20819
    작성자 : 너굴너구리.
    추천 : 0
    조회수 : 459
    IP : 110.70.***.84
    댓글 : 1개
    등록시간 : 2017/06/13 18:44:12
    http://todayhumor.com/?programmer_20819 모바일
    뇌파센서 콘솔 프로그램을 윈도우폼으로 바꾸려고 하는 중입니다
    옵션
    • 본인삭제금지
    프로그래밍을 잘 모르는 학생인데요 어쩌다보니 일을 맞게 되었습니다.
    문제가 생기는 부분은아래에 적어분 코드 전문에서 위의 코드는 잘 돌아가는데 아래에서 발생하는 문제가
     private void sportRCV(object sender, EventArgs e)
            {

                Device.DataEventArgs de = (Device.DataEventArgs)e;
                NeuroSky.ThinkGear.DataRow[] tempDataRowArray = de.DataRowArray;

                TGParser tgParser = new TGParser();
                tgParser.Read(de.DataRowArray);

                L = tgParser.ParsedData.Length;
                double[] RawLD = new double[L];
                float[] RawL = new float[L];

                if (serialPort1.BytesToRead > 0) //데이터가 읽혀지면 출력
                {
                    string valueStr = serialPort1.ReadLine();
                    string[] valueStrArray = valueStr.Split(',');
    이쪽인데요 

    Device.DataEventArgs de = (Device.DataEventArgs)e;

    이부분이 EventArgs 타입을 DataEventArgs로 캐스팅 할수 없다고 하면서 오류가 납니다. 

     DataEventArgs타입의 경우 회사에서 준 솔루션 파일에 포함되어있는 헤더파일 안에 정의되어있고요

    콘솔파일로 돌릴때는 돌아가는데 그걸 윈도우 폼으로 바꾸려고 다른 팀원이 작업중이던 원도우폼에 조금씩 잘라 붙여가고 있었는데 
    저곳에서 캐스팅 할수 없다면서 오류가 나더라고요
    콘솔에서는 잘 캐스팅 되면서 왜 저기서는 저러는지 답답해 죽겠습니다 ㅜㅜㅜ

    코드 전문도 올리겠습니다.

    using System;

    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading;
    using System.IO;
    using System.IO.Ports;

    using NeuroSky.ThinkGear;
    using NeuroSky.ThinkGear.Algorithms;

    using Mathematics;
    using System.Windows.Forms;
    using System.Drawing;


    namespace testprogram {
       
     class Program {

            static Connector connector;
            static byte poorSig;
            static float[] RawF = new float[1024];
            static int index = 0;
            static int L = 0;
           

            public static void Main(string[] args) {

                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form1());
                

                Console.WriteLine("HelloEEG!");

                // Initialize a new Connector and add event handlers

                connector = new Connector();
                connector.DeviceConnected += new EventHandler(OnDeviceConnected);
                connector.DeviceConnectFail += new EventHandler(OnDeviceFail);
                connector.DeviceValidating += new EventHandler(OnDeviceValidating);

                // Scan for devices across COM ports
                // The COM port named will be the first COM port that is checked.
                connector.ConnectScan("COM12");

                // Blink detection needs to be manually turned on
                connector.setBlinkDetectionEnabled(true);
                Thread.Sleep(450000);




                Console.WriteLine("Goodbye.");
                connector.Close();
                Environment.Exit(0);
                
                
            }


            // Called when a device is connected 

            static void OnDeviceConnected(object sender, EventArgs e) {

                Connector.DeviceEventArgs de = (Connector.DeviceEventArgs)e;

                Console.WriteLine("Device found on: " + de.Device.PortName);
                de.Device.DataReceived += new EventHandler(OnDataReceived);

            }




            // Called when scanning fails

            static void OnDeviceFail(object sender, EventArgs e) {

                Console.WriteLine("No devices found! :(");

            }



            // Called when each port is being validated

            static void OnDeviceValidating(object sender, EventArgs e) {

                Console.WriteLine("Validating: ");

            }

            // Called when data is received from a device

            static void OnDataReceived(object sender, EventArgs e) {

                //Device d = (Device)sender;

                Device.DataEventArgs de = (Device.DataEventArgs)e;
                DataRow[] tempDataRowArray = de.DataRowArray;

                TGParser tgParser = new TGParser();
                tgParser.Read(de.DataRowArray);

                L = tgParser.ParsedData.Length;
                double[] RawLD = new double[L];
                float[] RawL = new float[L];
                //float[] RawFFT = new float[L];

                /* Loops through the newly parsed data of the connected headset*/
    // The comments below indicate and can be used to print out the different data outputs. 

                for (int i = 0; i < tgParser.ParsedData.Length; i++){
        
                    if (tgParser.ParsedData[i].ContainsKey("Raw")){
                   
                        //Console.WriteLine("Raw Value:" + tgParser.ParsedData[i]["Raw"]);
                        RawLD[i] = tgParser.ParsedData[i]["Raw"];
                        RawL[i] = (float)(tgParser.ParsedData[i]["Raw"]);

                        RawF[index] = RawL[i];
                        ++index;

                        if (index == RawF.Length)
                        {
                            for (int k = 0; k < RawF.Length; k++)
                            {
                                //Console.WriteLine("RawF = " + k + ":" + RawF[k]);
                            }
                            float[] RawFFT = FFT1D.powerSpectrum1D(RawF, false);
                            for (int k = 0; k < RawFFT.Length; k++)
                            {
                                Console.WriteLine("RawFFT = " + ":" + RawFFT[k]);
                            }
                            index = 0;
                            
                        }
                    }
                }
               

                }
                    
            
            }

        }




    위가 콘솔 코드 전문이고요



    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.IO.Ports;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using NeuroSky.ThinkGear;
    using NeuroSky.ThinkGear.Algorithms;
    using System.Threading;
    using Mathematics;


    namespace testprogram
    {
        public partial class Form1 : Form
        {
            Connector connector;
            byte poorSig;
            float[] RawF = new float[1024];
            int index = 0;
            int L = 0;
            int m = 0;
            int l = 0;
            
            //private SerialPort port = new SerialPort();
            private Queue<byte> recievedData = new Queue<byte>();


            public Form1()
            {
                string InputData = String.Empty;
               


                InitializeComponent();
              
            }

            private void Serialport1_datareceived(object sender, SerialDataReceivedEventArgs e)
            {
                
                m = 2;
                label.Text = "2";

                try
                {



                  /*  int BTR = serialPort1.BytesToRead;
                    char[] array = new char[BTR];
                    serialPort1.Read(array, 0, BTR);
                   */ 
                      
                    //byte[] data = new byte[serialPort1.BytesToRead];
                    //serialPort1.Read(data, 0, serialPort1.BytesToRead);
                    //data.ToList().ForEach(b => recievedData.Enqueue(b));
                    this.Invoke(new EventHandler(sportRCV)); //쓰레드 위반을 피해가기 위해
                   
                }
                catch(Exception ex)
                {
                    MessageBox.Show(ex.Message, "종료", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }


            }


            private void sportRCV(object sender, EventArgs e)
            {

                Device.DataEventArgs de = (Device.DataEventArgs)e;
                NeuroSky.ThinkGear.DataRow[] tempDataRowArray = de.DataRowArray;

                TGParser tgParser = new TGParser();
                tgParser.Read(de.DataRowArray);

                L = tgParser.ParsedData.Length;
                double[] RawLD = new double[L];
                float[] RawL = new float[L];

                if (serialPort1.BytesToRead > 0) //데이터가 읽혀지면 출력
                {
                    string valueStr = serialPort1.ReadLine();
                    string[] valueStrArray = valueStr.Split(',');
    //======================================= 여기부터 추가=============================================

                    float[] valuefloatArray = new float[valueStrArray.Length];
                    for (int i = 0; i < valueStrArray.Length; ++i)
                    {
                        valuefloatArray[i] = float.Parse(valueStrArray[i]);
                    }

                    float[] valuefftArray = Mathematics.FFT1D.powerSpectrum1D(valuefloatArray, false);



    //=======================================여기까지 추가===============================================

                    for (int i = 0; i < valueStrArray.Length; ++i)
                    {
                        //float value = float.Parse(valueStrArray[i]);    // ((기존))
                        float value = valuefftArray[i]; // 위의껄 이걸로 바꿈
                        txtRxData.Text += ";" + value;
                    }
                    
                    //txtRxData.Text += serialPort1.ReadLine();
                    //  txtRxData.Text += serialPort1.BytesToRead.ToString() + ";";

                    //float j = serialPort1.ReadByte();

                    // //txtRxData.AppendText(j.ToString() + ";");
                    // char str = (char)j;
                    // txtRxData.AppendText(str + ";");
                    // //txtRxData.Text += j.ToString() + ";";



                }

            }

        

     
           
            private void Form1_Load(object sender, EventArgs e)
            {
               
                string[] ports = SerialPort.GetPortNames();
                
                cboPort.Items.AddRange(ports);
                cboPort.SelectedIndex = 0;
                System.Int32[] Baudlates = { 9600, 115200, 4800, 19200, 38400 };

                
                for (int temp = 0; temp < 5; temp++)

                {
                    cborate.Items.Add(Baudlates[temp]);

                }
                cborate.SelectedIndex = 0;

                // 출처: http://jyclb.tistory.com/2 [Knock the door.]


                btnClose.Enabled = false;

                
            }

            private void btnOpen_Click(object sender, EventArgs e)
            {
                btnOpen.Enabled = false;
                btnClose.Enabled = true;

                           
                try
                {
                    serialPort1.PortName = cboPort.Text;
                    serialPort1.Open();

                    l = 2;
                    label1.Text = "2";



                }
                catch (Exception ex)
                {
                    l = 1;
                    label1.Text = "port is not connected";
                    MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK, MessageBoxIcon.Error);


                }
                
            }


            private void btnClose_Click(object sender, EventArgs e)
            {

                btnOpen.Enabled = true;
                btnClose.Enabled = false;
                try
                {
                   
                    serialPort1.Close();
                    l = 1;
                    label1.Text = "port is not connected";
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK, MessageBoxIcon.Error);


                }
            }

          
            private void Form1_FormClosing(object sender, FormClosingEventArgs e)
            {
                if (serialPort1.IsOpen)
                    serialPort1.Close();
            }

         
            private void toolStripStatusLabel1_TextChanged(object sender, EventArgs e)
            {
                
                
                if (m == 2)
                {
                    label.Text = "getting data...";
                }
            }

            private void label1_TextChanged(object sender, EventArgs e)
            {
                if(l == 1)
                {
                    label1.Text = "port is not connected";
                }
                if (l == 2)
                {
                    label1.Text = serialPort1.PortName + " is connected | baudrate =" + serialPort1.BaudRate;
                }
            }

            private void cborate_SelectedIndexChanged(object sender, EventArgs e)
            {
                System.String SelectedBaud;

                SelectedBaud = cborate.SelectedItem.ToString() + ",8N1";

                serialPort1.BaudRate = (Int32)cborate.SelectedItem;
                
            }
        }
       
       
    }

    여기까지가 윈도우폼으로 바꾸려는 중에 있는 코드입니다.

    코드가 아직 완성도 아니라 뒤죽박죽인데요 

    콘솔프로그램 돌릴때는 멀쩡히 하던 캐스팅을 왜 못하는지 모르겠습니다. ㅜㅜㅜㅜ


    이 게시물을 추천한 분들의 목록입니다.
    푸르딩딩:추천수 3이상 댓글은 배경색이 바뀝니다.
    (단,비공감수가 추천수의 1/3 초과시 해당없음)

    죄송합니다. 댓글 작성은 회원만 가능합니다.

    번호 제 목 이름 날짜 조회 추천
    20843
    C# 이벤트 처리 중복성 질문입니다. [9] 본인삭제금지 포그롬 17/06/16 14:49 402 0
    20842
    C++(C)와 C#,JAVA의 가장 큰 차이점은 무엇일까요? [4] DJ.A 17/06/16 14:07 787 1
    20841
    아래 계약관련 추가질문입니다~ hjw0428 17/06/16 13:41 357 0
    20840
    계약서 관련 질문있습니다~ [4] 본인삭제금지 hjw0428 17/06/16 10:47 468 0
    20839
    흔한 개발자에 대한 인식. [36] 프로호구 17/06/16 08:51 1241 14
    20838
    C DLL구성된걸 VS2010 VB로 사용하는데 어떻게 처리해야 하나요? 귀염둥하기스 17/06/16 08:22 274 0
    20837
    Common Lisp 엄청 간결하네요 ㄷㄷ 금연07132016 17/06/16 03:53 581 1
    20836
    안드로이드에서 웹뷰는 원래 외부 js못 읽나요? [1] kotran 17/06/16 01:10 394 0
    20835
    [Linux C] 대기중인 getchar() 함수 깨어내는 방법 문의 [3] 본인삭제금지 상사꽃 17/06/15 17:38 562 0
    20833
    jsp 표현언어 질문 [2] 본인삭제금지 해머컴히얼 17/06/15 05:57 549 0
    20832
    구글에 웹사이트 만드려고 하는데 [4] 살렘 17/06/15 01:07 533 0
    20831
    제가 틀린건가요? [20] 리안츠 17/06/14 21:41 890 6
    20830
    C# 리소스 질문입니다. [4] 본인삭제금지 포그롬 17/06/14 20:08 728 0
    20829
    C# 데이터베이스 질문입니다! [4] 본인삭제금지 포그롬 17/06/14 19:42 527 1
    20828
    JAVA 기초적인 사칙연산 프로그램 및 상속 다시 질문드려요 ㅠ [5] 호빅 17/06/14 15:36 1671 0
    20826
    C언어 이중포인터 [2] 창작글베스트금지베오베금지본인삭제금지 Simmons 17/06/14 12:43 754 0
    20825
    mvvm패턴 질문좀 드릴게요! [4] 본인삭제금지 도레미파솔라 17/06/14 11:13 436 0
    20823
    개인 개발자가 홍보 할 만한 외국 사이트 있을까요? [1] 본인삭제금지 어제의유우머 17/06/14 02:48 503 0
    20822
    프게에 이런질문도 해도 될까요? [12] cksow12 17/06/13 22:54 1056 0
    20821
    모바일 프로그래밍(안드로이드) 기말고사로 낼 만한게 뭐가 있을까요... [8] 배고픈곰돌이 17/06/13 20:10 1118 0
    20820
    서버간 설정파일 공유를 어떻게 할수있을까요? [4] 베스트금지베오베금지본인삭제금지외부펌금지 야옹아옹 17/06/13 19:34 425 0
    뇌파센서 콘솔 프로그램을 윈도우폼으로 바꾸려고 하는 중입니다 [1] 본인삭제금지 너굴너구리. 17/06/13 18:44 460 0
    20818
    파이썬을 잘하고 시퍼요 [9] Piko 17/06/13 17:31 602 0
    20817
    css 미디어쿼리가 컴퓨터에서는 적용되는데 핸드폰에서는 적용이안되요 [2] 본인삭제금지 아베나나 17/06/13 15:08 517 0
    20816
    c언어 kbhit 질문 [4] 본인삭제금지 QBey 17/06/13 12:30 450 0
    20815
    springframework 에서 follow 구현을 어떻게 해야되나요? [2] 창작글베스트금지본인삭제금지 타라123 17/06/13 12:13 420 0
    20814
    Spring Boot 에서 서버에 설치된 jar 로 필터 할수 있나요? [2] 본인삭제금지 레드a 17/06/13 11:02 378 0
    20813
    AI의 대표적 알고리즘 [7] 오토메틱시티 17/06/13 09:46 994 1
    20812
    마이너리포트 앱에 도전해 보세요. [8] 오토메틱시티 17/06/13 07:31 654 0
    20810
    함수형 프로그래밍 질문... [2] 본인삭제금지 금연07132016 17/06/13 04:35 539 0
    [◀이전10개] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [다음10개▶]
    단축키 운영진에게 바란다(삭제요청/제안) 운영게 게시판신청 자료창고 보류 개인정보취급방침 청소년보호정책 모바일홈