다른 메서드를 처리하는 동안 직렬 포트 값 읽기

릴리안

저는 C #을 완전히 처음 접했고 알아낼 수없는 매우 간단한 문제가 있습니다. 완전히 이해하지 못하는 기존 코드를 개선하려고합니다.

"연결"버튼을 누르면 내 프로그램이 직렬 포트를 사용하여 장치에 연결됩니다.

 private void button_Connect_Click(object sender, EventArgs e)
    {
        serialPort.PortName = (string)comboBox_SerialPorts.SelectedItem;
        serialPort.Open();
        serialPort.DataReceived += SerialPort_DataReceived;
    }

SerialPort_DataReceived 메서드는 DataReceived 이벤트를 처리합니다.

    public delegate void InvokeTreatment(byte[] buffer);
    private void SerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
    {
        byte[] buffer = new byte[13];
        try
        {
            serialPort.Read(buffer, 0, buffer.Length);

            byte tmp = 0;
            for (int i = 1; i < 11; i++)
                tmp += buffer[i];
            if ((buffer[11] == tmp) && (buffer[12] == '!'))
                try
                {
                    this.BeginInvoke(new InvokeTreatment(Treatment_UART), new object[] { buffer });
                }
                catch { }
        }
        catch { }
    }

Treatment_UART는 시리얼 포트의 값을 사용하여 인터페이스에 값을 표시하는 기능입니다.

private void Traitement_UART(byte[] buffer)

이 시점에서 내 프로그램은 올바르게 작동합니다. 내 시리얼 장치에서받은 값을 실시간으로 표시합니다.

이제 버튼을 누를 때 시작되는 " Processing " 이라는 다른 방법으로 일부 처리를 수행하려고 합니다 (예 : 직렬 장치에서받은 데이터를 처리하는 long for 루프). 내 문제는 처리 실행 중에 직렬 값의 실시간 수신 및 표시가 더 이상 활성화되지 않는다는 것입니다. Processing 실행 중에 Serial 장치에서 정보를 계속 수신하려면 프로그램이 필요합니다 .

이를 수행하는 다른 방법이있을 수 있습니다. 다른 스레드에서 내 함수를 실행하거나 단순히 내 Processing 메서드 내에서 "SerialPort_DataReceived"메서드를 호출하는 것에 대해 생각했습니다 . 어떻게해야합니까? 다른 스레드 에서 Processing실행 하면 직렬 포트에서 잘못된 (또는 실현되지 않은) 값을 읽을 위험이 있습니다.

미리 감사드립니다!

캡틴 잭

다중 스레드를 사용하려면 using System.Threading;맨 위에 있는를 사용하고 있는지 확인한 다음 다음을 수행하십시오.

Thread thread = new Thread(yourFuntionHere(params));
thread.Start();

메서드가 완료되면 스레드가 자동으로 닫히므로 걱정할 필요가 없습니다!

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Java의 직렬 포트에서 읽는 동안 가비지 값 가져 오기

분류에서Dev

직렬 포트에서 데이터를 읽는 동안 I / O 보류 오류

분류에서Dev

직렬 포트를 읽는 동안 IO 작업 중단 오류 발생

분류에서Dev

serial_asyncio : 직렬 포트를 대기열로 읽고 작동하지 않는 main ()에서 해당 대기열을 읽습니다.

분류에서Dev

QSocketnotifier가 직렬 포트 읽기 용 Windows에서 작동하지 않습니까?

분류에서Dev

직렬 포트에 쓰기는 다른 스레드가 읽기를 기다리고있을 때 영원히 차단됩니다.

분류에서Dev

직렬 포트 읽기 / 쓰기가 작동하지 않음

분류에서Dev

USB 직렬 가상 COM 포트 : 읽기는 작동하지 않지만 쓰기는 작동합니다.

분류에서Dev

첫 번째 값을 반환하는 직렬 포트에서 개행으로 읽기

분류에서Dev

Winddows를 사용하여 Ruby에서 직렬 포트 읽기

분류에서Dev

직렬 포트에서 다른 값만 수신

분류에서Dev

다른 열에서 최대 값을 읽는 동안 열에서 시점 찾기

분류에서Dev

JNF9VT에서 작동하는 직렬 포트 얻기

분류에서Dev

FileSystemWatcher.Created 이벤트를 처리하는 동안 파일 읽기 오류가 발생했습니다.

분류에서Dev

Apche의 POI의 getDateCellValue () 메소드를 사용하여 엑셀 날짜 열 값을 읽는 동안 어떻게 널 포인터 예외를 처리하는

분류에서Dev

다른 신호를 처리하는 동안 신호 대기

분류에서Dev

Blazor의 직렬 포트에서 읽기

분류에서Dev

직렬 포트에서 이중 읽기

분류에서Dev

C의 직렬 포트에서 읽기

분류에서Dev

Windows의 직렬 포트에서 읽기

분류에서Dev

Putty는 직렬 포트 열기를 거부하고 소리 만 울립니다.

분류에서Dev

부트 스트랩에서 다른 메뉴를 여는 동안 드롭 다운 메뉴 닫기

분류에서Dev

직렬 포트로 데이터를 보내는 동안 비동기 디지털 시계

분류에서Dev

C #의 직렬 포트에서 데이터를 기다리는 중

분류에서Dev

C #을 사용하여 기존 직렬 포트를 바이트로 읽기

분류에서Dev

초기 데이터가있는 직렬 포트를 읽으면 많은 0이 발생합니다.

분류에서Dev

직렬 포트에서 읽기는 항상 작성된 내용을 반환합니다.

분류에서Dev

C # 직렬 읽기가 특정 직렬 입력에서 작동하지 않습니다.

분류에서Dev

직렬 포트 readline 메소드가 이상한 문자를 읽습니다.

Related 관련 기사

  1. 1

    Java의 직렬 포트에서 읽는 동안 가비지 값 가져 오기

  2. 2

    직렬 포트에서 데이터를 읽는 동안 I / O 보류 오류

  3. 3

    직렬 포트를 읽는 동안 IO 작업 중단 오류 발생

  4. 4

    serial_asyncio : 직렬 포트를 대기열로 읽고 작동하지 않는 main ()에서 해당 대기열을 읽습니다.

  5. 5

    QSocketnotifier가 직렬 포트 읽기 용 Windows에서 작동하지 않습니까?

  6. 6

    직렬 포트에 쓰기는 다른 스레드가 읽기를 기다리고있을 때 영원히 차단됩니다.

  7. 7

    직렬 포트 읽기 / 쓰기가 작동하지 않음

  8. 8

    USB 직렬 가상 COM 포트 : 읽기는 작동하지 않지만 쓰기는 작동합니다.

  9. 9

    첫 번째 값을 반환하는 직렬 포트에서 개행으로 읽기

  10. 10

    Winddows를 사용하여 Ruby에서 직렬 포트 읽기

  11. 11

    직렬 포트에서 다른 값만 수신

  12. 12

    다른 열에서 최대 값을 읽는 동안 열에서 시점 찾기

  13. 13

    JNF9VT에서 작동하는 직렬 포트 얻기

  14. 14

    FileSystemWatcher.Created 이벤트를 처리하는 동안 파일 읽기 오류가 발생했습니다.

  15. 15

    Apche의 POI의 getDateCellValue () 메소드를 사용하여 엑셀 날짜 열 값을 읽는 동안 어떻게 널 포인터 예외를 처리하는

  16. 16

    다른 신호를 처리하는 동안 신호 대기

  17. 17

    Blazor의 직렬 포트에서 읽기

  18. 18

    직렬 포트에서 이중 읽기

  19. 19

    C의 직렬 포트에서 읽기

  20. 20

    Windows의 직렬 포트에서 읽기

  21. 21

    Putty는 직렬 포트 열기를 거부하고 소리 만 울립니다.

  22. 22

    부트 스트랩에서 다른 메뉴를 여는 동안 드롭 다운 메뉴 닫기

  23. 23

    직렬 포트로 데이터를 보내는 동안 비동기 디지털 시계

  24. 24

    C #의 직렬 포트에서 데이터를 기다리는 중

  25. 25

    C #을 사용하여 기존 직렬 포트를 바이트로 읽기

  26. 26

    초기 데이터가있는 직렬 포트를 읽으면 많은 0이 발생합니다.

  27. 27

    직렬 포트에서 읽기는 항상 작성된 내용을 반환합니다.

  28. 28

    C # 직렬 읽기가 특정 직렬 입력에서 작동하지 않습니다.

  29. 29

    직렬 포트 readline 메소드가 이상한 문자를 읽습니다.

뜨겁다태그

보관